Sobes.tech
Junior — Middle

Welche Konsequenzen hat es, wenn zwei Objekte denselben Hash-Code haben?

sobes.tech KI

Antwort von AI

Wenn zwei Objekte denselben Hash-Code haben, nennt man das eine Hash-Kollision. In Java ist das normal und zu erwarten, da der Hash-Code ein int ist und es viel mehr Objekte geben kann. Folgen:

  • Kollisionen können die Leistung von Hash-Datenstrukturen (z.B. HashMap oder HashSet) verringern, da Objekte mit demselben Hash-Code in einem Bucket gespeichert werden und bei der Suche die Objekte mittels equals verglichen werden müssen.
  • Es ist wichtig, dass bei gleichen Hash-Codes die equals-Methode die Objekte korrekt unterscheidet, sonst können Daten überschrieben oder verloren gehen.

Beispiel:

Map<MyObject, String> map = new HashMap<>();
// Wenn MyObject hashCode() überschreibt, aber equals() nicht alle Felder berücksichtigt,
// können Fehler bei der Arbeit mit der Sammlung auftreten.