Назад к вопросам
СБЕР
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);
}