Встречается на 2% собеседований по Java
Как определишь бакет для добавления элемента в HashMap
В HashMap бакет определяется на основе хэш-кода ключа и текущего размера массива бакетов. Алгоритм:
- Вычисляется хэш-код ключа через
hashCode() - Хэш модифицируется внутренним методом
hash()для улучшения распределения - Индекс бакета вычисляется как
(n - 1) & hash, где n - текущий размер массива (всегда степень двойки)
Пример:
java
Map<String, Integer> map = new HashMap<>();
map.put("key", 1); // Хэш "key" -> индекс бакета
// Внутренняя логика:
int hash = "key".hashCode();
hash = hash ^ (hash >>> 16); // Распределение битов
int index = (16 - 1) & hash; // Для HashMap с capacity=16Важно: при коллизиях элементы добавляются в виде linked list или tree (в Java 8+) в одном бакете.

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