Junior — Middle
Come viene garantita la coerenza tra i metodi hashCode() ed equals() in Java e perché è importante?
sobes.tech AI
Risposta dell'AI
In Java, i metodi hashCode() e equals() devono essere coerenti affinché gli oggetti funzionino correttamente nelle collezioni come HashMap o HashSet. Regole:
- Se due oggetti sono uguali secondo equals(), allora il loro hashCode() deve restituire lo stesso valore.
- Se hashCode() di due oggetti è diverso, allora equals() deve restituire false.
Questo è importante perché le tabelle hash usano prima hashCode() per una ricerca rapida, e poi equals() per un confronto preciso. Non rispettare questa regola può portare a un funzionamento errato delle collezioni.
Esempio:
@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);
}