hashMap

Crash123

Erfahrenes Mitglied
Hallo Leute,

es ist vllt nicht unbeding eine von den
Fragen die ihr hören möchtet aber
ich würde mich freuen wenn mir jemand
erklären würde wie hashMap's funktionieren
und wozu sie da sind, in der java api hab
ich das nichst ganz verstanden(eher garnicht).

Vielen Dank!
 
Eine Map bildet von einem Schlüssel auf einen Wert ab. Sie ist also für ein eindeutiges Mapping von einem Wert auf einen anderen gedacht.

Eine HashMap verwendet für den Aufbau der internen Datenstruktur eine Hashfunktion. Dies soll für konstante Zugriffszeiten auf die Map sorgen, auch wenn diese viele Einträge enthält. Siehe auch: http://de.wikipedia.org/wiki/Hashfunktion
 
Eine HashMap ist einfach gesagt eine liste von Zuweißungen, in den Klammern sagst du was (1. Variablentyp) zu was (1. Variablentyp) zugewießen wird:
Code:
HashMap<Integer, String> map; //int-Werte werden Strings zugeordnet

z.B.: 1 = Schuh
2 = Tom
8 = Schiff

es ist egal ob zwischen den Zahlen Lücken sind, ist ja wie bei einer ArrayList.

mit
Code:
map.get(8);
rufst du dann denn String "Schiff" auf.

Hoffe das hilft dir.
 
Die Frage ist nun, warum eine HashMap und keine Liste.

Eine HashMap benutzt wie gesagt eine Hashfunktion zur Berechnung der Stelle, wo Dein Wert dann hinkommt.
Das hat den Sinn, dass der Zugriff sehr sehr schnell ist.

Bsp. Dein Schrank kannst Du Dir auch als HashMap vorstellen. Du weißt immer genau, dass Deine Socken in das Schubfach unten rechts reinkommen. Genau dieses Abbilden "Socken --> Schubfach unten links" ist die Hashfunktion. Suchst Du Deine gelben Socken, musst Du nur unten links schauen und hast sie.

Wäre Dein Schrank eine Liste (so wie meiner ;) ), würdest Du in den Schrank schauen und jedes Teil was Du findest untersuchen, ob es eine Socke ist. Das kann lange dauern, wenn die Socke irgendwo liegt.

Viele Grüße,
~Fulk.
 
Bei Listen bestimmt der Index den Platz eines Elements. Wie bereits erwähnt, bestimmt der Hashwert resp. der Key den Platz des Elements resp. des Werts. Stell Dir vor, es gibt mehrere Kübeln mit Nummer von 1 bis 10. Alle Werte mit dem Key 1 kommen in Kübel 1 rein usw. Sofern man eigene Objekte als Key verwendet, müssen diese den hashCode() und equals() sauber überschreiben, ansonsten wird das Element nicht gefunden bzw. die Dubletten nicht erkannt und die HashMap wird nicht richtig funktionieren.
 
der Beitrag ist 4 Jahre alt! o_O? Mittlerweile weiß ich wofür HashMap´s da sind ^^ ... aber trotzdem danke ;-)
 
Zurück