hashcode

manius

Mitglied
Hi,
ich habe da meine Probleme aus der gefundenen Quellen die zusammenhänge zu Hashcode zu verstehen ....
- jeder Object hatt ein hashcode .... (wird es automatisch Default berechnet ? )
- ich habe in verschiedenen Quellen von Überschreiben des hashCode gelesen.... aber wann macht man das ? wann ist das nötig ?
-wenn ich z.B. ein String Object habe, wird es automatisch ein hashCode erzeugt ? was ist mit meiner PersonClasse ?
- was ist wenn ich HashMap nutze ?

Thanks
 

fhoffmann

Top Contributor
Hallo,

in der Klasse Object wird die Methode hashCode() implementiert. Aber da hier keine sinnvollen Informationen vorliegen, hat diese Klasse keine andere Chance, als den Hash-Code aus der Speicheradresse des Objekts zu erzeugen. Zwei unterschiedliche Objekte mit gleichem Inhalt hätten also unterschiedliche Hash-Codes.
In deiner Personen-Klasse solltest du die Methode hashCode() überschreiben. Dabei greifst du auf die Member deiner Klasse (Vorname, Nachname, Geburtsdatum etc.) zu (am besten über den Hash-Code der Member). Dann bekommen unterschiedliche Objekte der Personen-Klasse mit gleichem Inhalt den gleichen Hash-Code.
Und du solltest gleichzeitig die Methode equals() überscheiben!

Gruß
Fritz
 

AndyJ

Bekanntes Mitglied
Man muss equals und hashcode nicht immer ueberschreiben, sondern nur dann wenn man Objecte der Klasse in einer Map oder in einem Set speichern will. Wenn man aber eine der beiden Methoden ueberschreibt, dann muss man auch die andere ueberschreiben. Andernfalls fuehrt das zu unbestimmten Zustaenden, wenn die Klasse dann in einer Map gespeichert wird.

Das ganze nennt sich equals-hashCode contract und ist in den Javadocs beschrieben: https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 
Ä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
T hashCode-Kontrakt Java Basics - Anfänger-Themen 1
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