Sobes.tech
Junior — Middle
104

Hoe wordt bepaald in welke bak een nieuwe waarde wordt geplaatst bij het toevoegen van een element aan HashMap?

Bedrijven waar gevraagd werd
СБЕРСБЕР

Antwoord van AI

sobes.tech AI

В Java при добавлении элемента в HashMap определяется бакет (корзина) с помощью хэш-функции ключа и размера массива бакетов.

Алгоритм:

  1. Вызывается метод hashCode() у ключа, чтобы получить целочисленное хэш-значение.
  2. Это значение дополнительно обрабатывается (например, применяется битовая операция для улучшения распределения).
  3. Затем вычисляется индекс бакета как index = (n - 1) & hash, где n — текущий размер массива бакетов (обычно степень двойки).

Таким образом, элемент помещается в бакет с индексом, зависящим от хэша ключа и размера массива. Это обеспечивает равномерное распределение элементов по бакетам и эффективный доступ.

Пример упрощённого вычисления индекса:

int hash = key.hashCode();
int index = (table.length - 1) & hash;