Junior — Middle
Wat is het belang van het overschrijven van de methode hashCode voor objecten die in collecties worden gebruikt?
sobes.tech AI
Antwoord van AI
Het overschrijven van de hashCode-methode is belangrijk voor het correct functioneren van objecten in hash-gebaseerde collecties zoals HashMap, HashSet en Hashtable. Deze collecties gebruiken de hash-code van het object voor snelle zoekopdrachten en opslag. Als hashCode niet samen met equals wordt overschreven, kunnen objecten die volgens equals gelijk zijn, verschillende hash-codes hebben, wat leidt tot onjuist gedrag van de collecties: bijvoorbeeld, dubbele objecten worden mogelijk niet gedetecteerd of een object wordt niet gevonden tijdens de zoekopdracht.
Regels voor overschrijven:
- Als twee objecten gelijk zijn volgens
equals, moeten hunhashCode-waarden gelijk zijn. - Als
equalsfalseretourneert, kunnen de hash-codes gelijk zijn, maar het is beter om collisions te minimaliseren.
Voorbeeld:
@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);
}
Hier worden objecten als gelijk beschouwd als ze dezelfde id hebben, en de hash-code wordt gebaseerd op dit veld.