Gymterview
middle

Будет ли работать HashMap, если все добавляемые ключи будут иметь одинаковый hashCode()

Да, HashMap будет работать корректно, но потеряет свое главное преимущество — O(1) доступ. Все элементы попадут в одну корзину и образуют связный список (или красно-черное дерево при 8+ элементах).

Производительность деградирует:

  • До Java 8: все операции O(N) — полный перебор списка.
  • С Java 8: O(log N) после treeification — дерево обеспечивает логарифмический поиск.

Функционально HashMap продолжит корректно различать ключи через equals(), просто гораздо медленнее. Этот сценарий может быть использован для DoS-атаки (hash collision attack), поэтому в Java 8 была добавлена treeification как защита.

На собеседовании: ответ — да, будет работать, но вырождается в список/дерево. Упомяните hash collision attack и treeification как защиту.