Встречается на собеседованиях • сегодня

Как вычисляется hashCode в HashMap

В HashMap hashCode вычисляется для ключа с помощью метода hashCode(), который должен быть переопределен в классе ключа. Если метод не переопределен, используется реализация из Object.hashCode(), которая возвращает уникальный хэш (обычно на основе адреса памяти).

HashMap дополнительно применяет свою внутреннюю хэш-функцию для улучшения распределения:

java
static final int hash(Object key) {
    int h;
    return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}

Здесь:

  • key.hashCode() – исходный хэш ключа,
  • h >>> 16 – сдвиг на 16 бит вправо (для перемешивания старших и младших битов),
  • ^ – XOR для улучшения распределения.

Итоговый хэш используется для определения индекса корзины (bucket) в массиве:

java
int index = (n - 1) & hash; // n – размер массива (степень двойки)

Это обеспечивает равномерное распределение элементов.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы