Back to questions
Junior — Middle
65
Каким образом происходит выбор корзины для добавляемого элемента в структуре данных HashMap?
Companies where asked
Ifellow
Answer from AI
sobes.tech AI
В структуре данных HashMap в Java выбор корзины (бакета) для добавляемого элемента происходит на основе хэш-кода ключа. Алгоритм следующий:
- Вызывается метод
hashCode()у ключа, чтобы получить его хэш. - Этот хэш дополнительно обрабатывается (например, с помощью операции XOR с сдвигом) для лучшего распределения битов и уменьшения коллизий.
- Полученное значение хэша берётся по модулю размера массива корзин (обычно размер массива — степень двойки, поэтому используется побитовое И с маской
length - 1), чтобы определить индекс корзины.
Пример упрощённого вычисления индекса корзины:
int hash = key.hashCode();
int index = (hash ^ (hash >>> 16)) & (table.length - 1);
Таким образом, элемент помещается в корзину с индексом index. Если в корзине уже есть элементы (коллизия), они хранятся в связном списке или дереве (начиная с Java 8).