Sobes.tech
Back to questions
Junior — Middle
65

Каким образом происходит выбор корзины для добавляемого элемента в структуре данных HashMap?

Companies where asked
Ifellow

Answer from AI

sobes.tech AI

В структуре данных HashMap в Java выбор корзины (бакета) для добавляемого элемента происходит на основе хэш-кода ключа. Алгоритм следующий:

  1. Вызывается метод hashCode() у ключа, чтобы получить его хэш.
  2. Этот хэш дополнительно обрабатывается (например, с помощью операции XOR с сдвигом) для лучшего распределения битов и уменьшения коллизий.
  3. Полученное значение хэша берётся по модулю размера массива корзин (обычно размер массива — степень двойки, поэтому используется побитовое И с маской length - 1), чтобы определить индекс корзины.

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

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

Таким образом, элемент помещается в корзину с индексом index. Если в корзине уже есть элементы (коллизия), они хранятся в связном списке или дереве (начиная с Java 8).