Встречается на 2% собеседований по Java

Как определишь бакет для добавления элемента в HashMap

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

  1. Вычисляется хэш-код ключа через hashCode()
  2. Хэш модифицируется внутренним методом hash() для улучшения распределения
  3. Индекс бакета вычисляется как (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+) в одном бакете.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы