Встречается на собеседованиях • сегодня
Как алгоритмически рассчитывается бакет для вставки элемента в HashMap
В Java бакет (индекс) для вставки элемента в HashMap рассчитывается по формуле:
java
int index = (n - 1) & hashГде:
n— текущий размер массива бакетов (всегда степень двойки)hash— это результатhashCode(), дополнительно обработанный внутренним методомhash()для улучшения распределения:
java
static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}Пример:
Для ключа "test" (hashCode() = 3556498) и n = 16:
hash = 3556498 ^ (3556498 >>> 16) = 3556498 ^ 54 = 3556444index = (16 - 1) & 3556444 = 15 & 3556444 = 12
Примечание:
- Если бакет уже занят, используется цепочка (в Java 8 — дерево при коллизиях).
- При
null-ключе элемент всегда попадает в бакет0.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы