Sobes.tech
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.