Junior — Middle
Koji su osnovni principi veze između metoda equals i hashCode u Javi?
sobes.tech АИ
Одговор од АИ
Основни принципи односа између equals и hashCode у Јави:
- Ако су два објекта једнака по 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, што обезбеђује њихову конзистентност.