hashCode-Kontrakt

Thisor

Bekanntes Mitglied
Hey, was genau ist denn der hashCode-Kontrakt? Und wieso sollte dieser eingehalten werden?
Ich habe folgende Definition vor mir liegen:

"Während der Ausführung eines Programms muss der Aufruf der Methode hashCode() für ein Objekt immer den gleichen Wert liefern.
Wenn a.equals(b) == true, dann muss auch
a.hashCode() == b.hashCode() gelten
Die Umkehrung muss nicht gelten: 2 Objekte mit dem gleichen Hashcode müssen nicht gleich sein!"

- Ich kann mir aber allerdings nicht vorstellen wann und wieso ich das anwenden soll, wenn es ja eh mit equals funktioniert. Und wieso es umgekehrt nicht gilt, ist mir auch ein rätsel :confused:. Wenn ich b.equals(a) eingeben würde, würde ja immer noch true kommen..

lg
 

InfectedBytes

Top Contributor
du hast das falsch verstanden. Mit "umgekehrt" ist nicht gemeint das du die Variablen tauschen sollst, sondern:
Wenn a.hashCode() == b.hashcode() gilt dann gilt nicht zwangsweise auch a.equals(b)

Der Hashcode contract sollte u.a. eingehalten werden, damit es auch ordentlich mit HashMaps und co funktioniert.

p.s.
Ansonsten solltest du dir vielleicht mal grundsätzlich anschauen, was denn ein hashcode überhaupt ist:
https://de.wikipedia.org/wiki/Hashfunktion
https://en.wikipedia.org/wiki/Java_hashCode()
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
W Wann und warum hashcode und equals? Java Basics - Anfänger-Themen 14
S Hashcode-Berechnung + ^ Java Basics - Anfänger-Themen 2
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
L Logistiksystem Methode equals und hashcode Java Basics - Anfänger-Themen 20
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
G HashCode für Indexberechnung im Array Java Basics - Anfänger-Themen 2
E hashCode implementierung Java Basics - Anfänger-Themen 9
M hashcode Java Basics - Anfänger-Themen 3
Psypsy hashCode, equals und toString Java Basics - Anfänger-Themen 3
K hashCode, compareTo vs. equals Java Basics - Anfänger-Themen 3
M Wann eigene implementierte HashCode Methode zwingend erforderlich? Java Basics - Anfänger-Themen 1
T hashCode mit boolean Java Basics - Anfänger-Themen 1
M Frage zu HashCode Methode in Java Java Basics - Anfänger-Themen 7
M Hashcode als lesbarer String Java Basics - Anfänger-Themen 1
S Hashcode - Operator ^ Java Basics - Anfänger-Themen 11
G 64 Bit Hashcode erstellen aus String Java Basics - Anfänger-Themen 11
K hashCode() Java Basics - Anfänger-Themen 2
C hashCode() bei Klassen, die nicht immutable sind Java Basics - Anfänger-Themen 27
M Collections Problem bei Überschreibung von hashcode() und equals() bei Hashset-Implementierung Java Basics - Anfänger-Themen 5
H Hashcode aus Datei erzeugen Java Basics - Anfänger-Themen 7
B Hashcode Java Basics - Anfänger-Themen 25
K equals() und hashcode() überschreiben Java Basics - Anfänger-Themen 5
T Code in hashCode Java Basics - Anfänger-Themen 2
S hashCode() überschreiben Java Basics - Anfänger-Themen 13
T equals() und hashCode() Java Basics - Anfänger-Themen 7
A HashCode Überschreiben Java Basics - Anfänger-Themen 2
H Suche spezifische Eigenschaft von Object - sowas wie ".hashCode()" Java Basics - Anfänger-Themen 4
E Java hashCode equals Problem Java Basics - Anfänger-Themen 2
E hashCode bei Objekten Java Basics - Anfänger-Themen 14
neurox Tutorial equals und hashCode überschreiben Java Basics - Anfänger-Themen 33
B Frage zu equals() und hashCode() Java Basics - Anfänger-Themen 28
A veränderbar kanonische Klassen: Methode equals, hashcode, serializable Java Basics - Anfänger-Themen 5
M Fehler im HashCode()! Java Basics - Anfänger-Themen 12
S equals() - hashCode() - Contract Java Basics - Anfänger-Themen 54
S HashCode überschreiben! Java Basics - Anfänger-Themen 17
D HashCode eines Objekts Java Basics - Anfänger-Themen 5
R Vergleiche mit Equals(), hashCode() und == Java Basics - Anfänger-Themen 10
M HashCode von java.io.File - Wurde die Datei geändert ? Java Basics - Anfänger-Themen 2
B Hashcode?Was ist das und wozu? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben