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

Как происходит процесс добавления элемента в HashMap

При добавлении элемента в HashMap сначала вычисляется хеш-код ключа через метод hashCode(). Затем хеш модифицируется внутренним методом hash() для уменьшения коллизий.

На основе хеша определяется индекс корзины (bucket):
index = (n - 1) & hash, где n — размер массива корзин.

Если корзина пуста — элемент добавляется в виде Node. Если уже есть элементы:

  • Проверяется ключ (через equals()). Если совпадает — значение перезаписывается.
  • Если это TreeNode (в случае преобразования в красно-черное дерево при большом кол-ве коллизий) — вставляем в дерево.
  • Иначе — добавляем в связный список. При достижении TREEIFY_THRESHOLD (8) список конвертируется в дерево.

Пример:

java
Map<String, Integer> map = new HashMap<>();
map.put("key", 1);  // hash("key") -> индекс, вставка в bucket

При переполнении (load factor > 0.75 по умолчанию) массив корзин увеличивается в 2 раза и все элементы перераспределяются.

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

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

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

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