Junior — Middle
Quali sono i principi fondamentali della relazione tra i metodi equals e hashCode in Java?
sobes.tech AI
Risposta dell'AI
Principi fondamentali della relazione tra equals e hashCode in Java:
- Se due oggetti sono uguali secondo equals, il loro hashCode deve essere lo stesso.
- Se l'hashCode di due oggetti è diverso, equals deve restituire false.
- Se equals restituisce false, l'hashCode può coincidere, ma ciò non è auspicabile, poiché peggiora le prestazioni delle strutture di hash.
Ciò garantisce il corretto funzionamento delle collezioni che utilizzano l'hash (HashMap, HashSet), dove hashCode determina il contenitore e equals confronta esattamente gli oggetti.
Esempio:
@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);
}
Qui, equals e hashCode si basano sullo stesso campo id, garantendo la loro coerenza.