Встречается на 2% собеседований по Java
Как будет работать HashMap при вставке пары ключ-значение, где hashCode всегда возвращает 1, а equals всегда возвращает false
При таких условиях HashMap превратится в вырожденный случай - все элементы будут помещаться в одну корзину (bucket), образуя длинный связанный список (или дерево, если элементов много).
Производительность деградирует до O(n) для операций get/put, так как при каждой вставке или поиске придется:
- Вычислять индекс корзины (всегда один и тот же)
- Проходить по всем элементам в списке, так как equals всегда false (новый элемент считается уникальным)
Пример:
java
class BadKey {
@Override
public int hashCode() { return 1; }
@Override
public boolean equals(Object o) { return false; }
}
Map<BadKey, String> map = new HashMap<>();
map.put(new BadKey(), "a"); // Всегда добавляет новый элемент
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы