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 hunhashCode()-waarden hetzelfde zijn. - Als
equals()falseteruggeeft, kunnen hunhashCode()-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.