Sobes.tech
Junior — Middle

Wanneer en waarom moet je de hashCode-methode overschrijven in een klasse?

sobes.tech AI

Antwoord van AI

De methode hashCode moet worden overschreven in de klasse als je de methode equals overschrijft. Dit is nodig om te voldoen aan het contract tussen deze methoden: als twee objecten gelijk zijn volgens equals, moeten hun hash-codes gelijk zijn. Anders kunnen objecten niet correct werken in op hash gebaseerde collecties, zoals HashMap of HashSet.

Voorbeeld:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    MyClass other = (MyClass) obj;
    return Objects.equals(field1, other.field1) && field2 == other.field2;
}

@Override
public int hashCode() {
    return Objects.hash(field1, field2);
}

Zonder hashCode te overschrijven, kunnen gelijkwaardige objecten volgens equals verschillende hash-codes hebben, wat fouten kan veroorzaken bij gebruik in hash-structuren.