Sobes.tech
Junior — Middle

Waarom wordt aanbevolen om de methoden equals() en hashCode() samen te implementeren bij het definiëren van een klasse?

sobes.tech AI

Antwoord van AI

De methoden equals() en hashCode() zijn met elkaar verbonden en moeten samen worden geïmplementeerd om correct gedrag van objecten in collecties zoals HashMap, HashSet en andere op hashing gebaseerde collecties te garanderen.

Als twee objecten als gelijk worden beschouwd door equals(), moet hun hashCode() hetzelfde waarde retourneren. Anders kunnen collecties niet correct werken: bijvoorbeeld, een object wordt mogelijk niet gevonden in de hash-tabel, zelfs als het er is.

Voorbeeld:

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    MyClass myClass = (MyClass) o;
    return id == myClass.id;
}

@Override
public int hashCode() {
    return Objects.hash(id);
}

Op deze manier garandeert de gezamenlijke implementatie consistentie en correct functioneren van objecten in collecties.