Sobes.tech
Junior — Middle

Kunt u de bedoeling van de hashCode-methode en de rol ervan bij het gebruik van contracten in Java uitleggen?

sobes.tech AI

Antwoord van AI

De hashCode()-methode in Java geeft een geheel getal terug dat de hash van het object vertegenwoordigt. Het wordt gebruikt in hash-gebaseerde collecties zoals HashMap, HashSet.

De rol van hashCode() in het contract met equals():

  • Als twee objecten gelijk zijn volgens de equals()-methode, moeten hun hashCode()-waarden hetzelfde zijn.
  • Als equals() false teruggeeft, kunnen hun hashCode()-waarden verschillend zijn, maar dit is niet verplicht.

Dit is belangrijk voor het correcte functioneren van hash-structuren: eerst wordt de hash berekend om de bak te bepalen, daarna wordt equals() aangeroepen voor de exacte vergelijking.

Voorbeeld van overschrijving:

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

@Override
public int hashCode() {
    return field.hashCode();
}

Het niet naleven van dit contract kan leiden tot onjuiste werking van collecties en moeilijk te detecteren fouten.