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 как защиту.