Back to questions
Junior — Middle
58
Какая связь существует между методами hashCode и equals в Java?
Answer from AI
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();
}
}