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

Какая связь существует между методами hashCode и equals в Java?

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

sobes.tech AI

В Java методы equals и hashCode связаны контрактом, который гарантирует корректную работу объектов в коллекциях, основанных на хэшировании (например, HashMap, HashSet).

Основные правила:

  • Если два объекта равны по методу equals (то есть a.equals(b) возвращает true), то у них должен быть одинаковый hashCode.
  • Если hashCode у двух объектов разный, то они точно не равны.

Это нужно, чтобы при поиске объекта в хэш-структуре сначала находился правильный бакет по hashCode, а затем уже сравнивались объекты через equals.

Пример:

class Person {
    private String id;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return id.equals(person.id);
    }

    @Override
    public int hashCode() {
        return id.hashCode();
    }
}