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

Всегда ли сложность доступа к элементу по ключу в HashMap O(1)

В идеальном случае доступ к элементу в HashMap действительно O(1) благодаря хеш-функции. Однако есть нюансы:

  1. Коллизии - если разные ключи дают одинаковый хеш, элементы хранятся в связанном списке/дереве (Java 8+), что может ухудшить сложность до O(n) в худшем случае.
  1. Рехеширование - при заполнении таблицы (по умолчанию 75%) происходит увеличение размера и перераспределение элементов, что временно влияет на производительность.

Пример плохого хеширования:

java
class BadKey {
    @Override
    public int hashCode() { return 42; } // Все ключи в один бакет
}
HashMap<BadKey, String> map = new HashMap<>();
// Все операции будут O(n)

Для поддержания O(1) важно:

  • Хорошая хеш-функция (String, Integer уже имеют)
  • Разумный load factor
  • Непереопределяемые ключи (immutable)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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