Sobes.tech
Назад к вопросам
Junior — Middle
66

На каких условиях должны соответствовать друг другу методы equals и hashCode в Java?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

В Java методы equals() и hashCode() должны быть согласованы по следующим правилам:

  • Если два объекта равны по equals(), то их hashCode() должен возвращать одинаковое значение.
  • Если два объекта имеют одинаковый hashCode(), это не обязательно означает, что они равны по equals(), но для производительности хэш-структур это желательно минимизировать.
  • Метод equals() должен быть рефлексивным, симметричным, транзитивным, консистентным и не равен null.

Пример:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    MyClass other = (MyClass) obj;
    return Objects.equals(field, other.field);
}

@Override
public int hashCode() {
    return Objects.hash(field);
}