Schrödinger programmiert Java - Das etwas andere Fachbuch
Schrödinger programmiert Java - Das etwas andere Fachbuch
Schrödinger programmiert Java - Das etwas andere Fachbuch
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Einс ch, das ist mir sch ebн fгfн:<br />
<strong>Das</strong> Ganze funktioniert aber nur, wenn gleiche Schuhe<br />
auch immer wirklich den gleichen Haschcode zugeordnet bekommen<br />
und nicht über mehrere Schränke verteilt werden. Was ist<br />
denn jetzt, wenn zwei Schuhe unterschiedliche Haschcode<br />
bekommen, aber trotzdem gleich sind?<br />
<strong>Schrödinger</strong>, ich weiß nicht, woran du jetzt gerade denkst, aber es<br />
heißt Hashcode, nicht Haschcode. Wie auch immer: <strong>Das</strong> hast du sehr gut bemerkt!<br />
Daher jetzt eine ganz, ganz wichtige Regel:<br />
[Notiz]<br />
Immer wenn du die equals()<br />
-Methode<br />
überschreibst, musst du auf jeden Fall auch die<br />
hashCode()-Methode überschreiben!<br />
Und zwar so, dass gleiche Objekte auch den gleichen<br />
Hashcode bekommen (und damit in den gleichen<br />
Schuhschrank kommen).<br />
[Notiz]<br />
-Methode kann ruhig so imple-<br />
mentiert sein, dass ungleiche Objekte gleiche<br />
Hashcodes bekommen. <strong>Das</strong> ist nicht schlimm.<br />
In unserem Schuhschrank-Beispiel sind ja auch gelbe<br />
Die hashCode()<br />
High Heels in 38 zusammen mit rosa High<br />
Heels in 38<br />
in einem Schrank.<br />
Wenn du jetzt unseren Schuhtester nochmal laufen<br />
lässt, funktioniert auch alles wieder, wie erwartet.<br />
Okay, okay, und<br />
weil ich eben von<br />
der ArrayList<br />
zu einem HashSet<br />
gewechselt bin, hat<br />
das überhaupt erst<br />
zu einem Problem<br />
geführt. <strong>Das</strong> ißtה<br />
abр ch, …<br />
… dass ArrayLists der Hashcode herzlich egal ist, genau.<br />
Die Schuhe werden da nicht in Schuhschränken gelagert, sondern einfach in einem langen Regal.<br />
Der schreibende Zugrifff<br />
auf ArrayLists ist daher auch schneller: Einfach<br />
die Schuhe an die letzte Position im Schuhregal und fertig. Bei den HashSets musst<br />
du erstmal den richtigen Schuhschrank finden, das kostet je nach Anzahl der Schuhschränke<br />
Zeit. Allerdings findest du die Schuhe in HashSets schneller, weil<br />
dort nicht wie bei einer ArrayList alle Elemente durchgegangen werden müssen,<br />
sprich, der lesende Zugrifff<br />
ist bei Hashcode-basierten Datenstrukturen schneller.<br />
332 Kapitel ACHT