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

Сколько объектов могут быть в одном бакете

В Java HashMap каждый бакет может содержать множество объектов, хранящихся в виде связного списка (до Java 8) или дерева (начиная с Java 8 при превышении порога TREEIFY_THRESHOLD = 8). Теоретически количество объектов в бакете ограничено только памятью, но на практике:

  • До Java 8: при коллизиях элементы добавляются в список, что может привести к деградации производительности до O(n)
  • Java 8+: при достижении 8 элементов в бакете список преобразуется в сбалансированное дерево (O(log n))

Пример коллизии:

java
Map<BadHash, String> map = new HashMap<>();
for (int i = 0; i < 10; i++) {
    map.put(new BadHash(i), "Value" + i); // все объекты попадут в один бакет
}

Где BadHash - класс с переопределенным hashCode(), всегда возвращающим 1.

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

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

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

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