Внутренняя реализация java.util.HashMap и HashSet

Я пытался понять внутреннюю реализациюjava.util.HashMap а такжеjava.util.HashSet.

Следующее - сомнения, всплывающие в моей голове некоторое время:

Какова важность@Override public int hashcode()&nbsp;в HashMap / HashSet? Где этот хеш-код используется внутри?Я обычно видел ключ HashMap бытьString&nbsp;любитьmyMap<String,Object>, Могу ли я сопоставить значения сsomeObject&nbsp;(вместо строки) какmyMap<someObject, Object>? Какие все контракты мне нужно соблюдать, чтобы это произошло успешно?

Заранее спасибо !

РЕДАКТИРОВАТЬ:

Мы говорим, что хеш-код ключа (проверка!) Является фактической вещью, в которую отображается значение в хеш-таблице? И когда мы делаемmyMap.get(someKey);&nbsp;Ява внутренне зоветsomeKey.hashCode()&nbsp;получить число в хэш-таблице для поиска результирующего значения?

Ответ:&nbsp;Да.

РЕДАКТИРОВАТЬ 2:

Вjava.util.HashSetоткуда ключ генерируется для хэш-таблицы? Это из объекта, который мы добавляем, например.mySet.add(myObject);&nbsp;тогдаmyObject.hashCode()&nbsp;собирается решить, где это находится в хэш-таблице? (поскольку мы не даем ключи в HashSet).

Ответ:&nbsp;Добавленный объект становится ключом. Значение пустышка!