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

Какие знаешь правила связи equals и hashCode

Связь между equals и hashCode регулируется контрактом в Java:

  1. Если два объекта равны по equals, их hashCode должен быть одинаковым. Обратное не обязательно.
  2. Если hashCode разный, объекты гарантированно не равны по equals.
  3. Если hashCode одинаковый, объекты могут быть равны или нет (коллизия).

Пример нарушения контракта:

java
class BadKey {
    int id;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        BadKey badKey = (BadKey) o;
        return id == badKey.id;
    }
    // Нет hashCode() - нарушение!
}

Такие объекты будут некорректно работать в HashSet/HashMap. Всегда переопределяйте оба метода согласованно!

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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