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 . Wenn ich b.equals(a) eingeben würde, würde ja immer noch true kommen..
lg
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 . Wenn ich b.equals(a) eingeben würde, würde ja immer noch true kommen..
lg