Встречается на собеседованиях • сегодня
Что нужно переопределить у объекта для его использования в HashMap
Для корректного использования объекта в HashMap необходимо переопределить методы hashCode() и equals().
Почему?
hashCode()определяет индекс корзины (bucket), где будет храниться запись.equals()проверяет равенство ключей при коллизиях (когдаhashCodeсовпадает).
Пример:
java
@Override
public int hashCode() {
return Objects.hash(id, name); // Используем поля, участвующие в equals
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
MyKey other = (MyKey) obj;
return id == other.id && Objects.equals(name, other.name);
}Важно:
- Если
equalsвозвращаетtrue,hashCodeдолжен быть одинаковым. - Обратное не обязательно: разные объекты могут иметь одинаковый
hashCode(коллизия). - Непереопределение
hashCodeприведёт к нарушению контракта и некорректной работеHashMap.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы