Junior — Middle
Wie wird die Konsistenz zwischen den Methoden hashCode() und equals() in Java sichergestellt und warum ist das wichtig?
sobes.tech KI
Antwort von AI
In Java müssen die Methoden hashCode() und equals() übereinstimmen, damit Objekte in Sammlungen wie HashMap oder HashSet korrekt funktionieren. Regeln:
- Wenn zwei Objekte nach equals() gleich sind, muss hashCode() denselben Wert zurückgeben.
- Wenn der hashCode() zweier Objekte unterschiedlich ist, gibt equals() unbedingt false zurück.
Das ist wichtig, weil Hash-Tabellen zuerst hashCode() für eine schnelle Suche verwenden und dann equals() für den genauen Vergleich. Die Nichteinhaltung dieses Vertrags kann zu fehlerhaftem Verhalten der Sammlungen führen.
Beispiel:
@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);
}