Back to questions
Промсвязьбанк
Ozon Fresh
Rutube
Junior — Middle
81
Каковы основные принципы связи между методами equals и hashCode в Java?
Companies where asked
Dogma
ПСБ
Uzum
Answer from AI
sobes.tech AI
Основные принципы связи между equals и hashCode в Java:
- Если два объекта равны по equals, то их hashCode должен быть одинаковым.
- Если hashCode двух объектов различен, то equals обязательно должен вернуть false.
- Если equals возвращает false, hashCode может совпадать, но это нежелательно, так как ухудшает производительность хеш-структур.
Это обеспечивает корректную работу коллекций, использующих хеширование (HashMap, HashSet), где hashCode определяет корзину, а equals — точное сравнение объектов.
Пример:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return Objects.equals(id, person.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
Здесь equals и hashCode основаны на одном и том же поле id, что обеспечивает их согласованность.