Junior — Middle
Cum se asigură coerența între metodele hashCode() și equals() în Java și de ce este important?
sobes.tech AI
Răspuns de la AI
În Java, metodele hashCode() și equals() trebuie să fie coerente pentru ca obiectele să funcționeze corect în colecții precum HashMap sau HashSet. Reguli:
- Dacă două obiecte sunt egale conform equals(), atunci hashCode() trebuie să returneze aceeași valoare.
- Dacă hashCode() a două obiecte este diferit, atunci equals() va returna întotdeauna false.
Este important deoarece tabelele hash folosesc mai întâi hashCode() pentru căutare rapidă, apoi equals() pentru comparație precisă. Nerespectarea acestui contract poate duce la funcționarea incorectă a colecțiilor.
Exemplu:
@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 == person.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}