Встречается на собеседованиях • сегодня

Что нужно переопределить у объекта для его использования в 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.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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