Встречается на собеседованиях • сегодня

Как происходит вставка элемента в HashMap, ели hashCode возвращает константу

При вставке элемента в HashMap с постоянным hashCode:

  1. Все элементы будут попадать в одну корзину (bucket), так как индекс корзины вычисляется как (n - 1) & hash, где n - размер таблицы, а hash - константа.

  2. Внутри корзины элементы хранятся как связный список (или дерево, если элементов много). Каждый новый элемент добавляется в конец списка.

  1. Это приводит к деградации производительности:
    • Поиск становится O(n) вместо O(1)
    • При достижении порога (TREEIFY_THRESHOLD = 8) список преобразуется в красно-черное дерево (O(log n))

Пример плохого hashCode:

java
@Override
public int hashCode() {
    return 42; // Все объекты попадут в одну корзину
}

Такой HashMap будет работать как связный список с худшей производительностью. Важно, чтобы hashCode() возвращал хорошо распределенные значения.

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

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

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

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