Sobes.tech
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.