15.09.2014 Aufrufe

Schrödinger programmiert Java - Das etwas andere Fachbuch

Schrödinger programmiert Java - Das etwas andere Fachbuch

Schrödinger programmiert Java - Das etwas andere Fachbuch

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!