Назад к вопросам
Промсвязьбанк
amoCRM
Junior — Middle
72
Какое взаимосвязи существуют между методами hashCode и equals в Java?
Компании, где спрашивали
RedLab
ПСБ
Ответ от нейросети
sobes.tech AI
В Java методы hashCode() и equals() тесно связаны и используются для сравнения объектов и работы с коллекциями, такими как HashMap и HashSet.
- Метод
equals()определяет, равны ли два объекта по смыслу (логически). - Метод
hashCode()возвращает целочисленное значение (хэш-код), которое используется для быстрого поиска объекта в хэш-структурах.
Важное правило: если два объекта считаются равными по методу equals(), то они должны возвращать одинаковый hashCode(). Нарушение этого правила приведет к некорректной работе коллекций на основе хэширования.
Пример:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return this.id == other.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}
Здесь объекты считаются равными, если у них одинаковое поле id, и hashCode() вычисляется на основе этого же поля.