Junior — Middle
Was sind die grundlegenden Prinzipien der Beziehung zwischen den Methoden equals und hashCode in Java?
sobes.tech KI
Antwort von AI
Grundprinzipien der Beziehung zwischen equals und hashCode in Java:
- Wenn zwei Objekte nach equals gleich sind, muss ihr hashCode gleich sein.
- Wenn der hashCode zweier Objekte unterschiedlich ist, muss equals unbedingt false zurückgeben.
- Wenn equals false zurückgibt, kann der hashCode übereinstimmen, aber das ist unerwünscht, da es die Leistung von Hash-Strukturen verschlechtert.
Dies gewährleistet die korrekte Funktion von Sammlungen, die Hashing verwenden (HashMap, HashSet), wobei hashCode die Bucket bestimmt und equals den genauen Vergleich der Objekte durchführt.
Beispiel:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return Objects.equals(id, person.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
Hier basieren equals und hashCode auf demselben Feld id, was ihre Konsistenz gewährleistet.