Wie funktioniert HashMap
in Java?
HashMap ist eine Sammlung zur Speicherung von Schlüssel-Wert-Paaren mit schnellem Zugriff per Hashfunktion. Schlüssel sind eindeutig, Werte dürfen sich wiederholen. Suchen, Einfügen und Löschen sind im Schnitt O(1).
Details
HashMap implementiert das Interface Map
und
speichert Daten intern in einem Array von "Buckets". Für jeden
Schlüssel wird ein Hashcode berechnet, der den Bucket-Index bestimmt.
Landen mehrere Schlüssel im selben Bucket (Kollision), werden die
Einträge als Liste oder ab Java 8 als Baum gespeichert.
Zentrale Methoden:
put(K key, V value)
— Fügt ein Paar hinzuget(Object key)
— Holt den Wert zum Schlüsselremove(Object key)
— Entfernt per Schlüssel-
containsKey(Object key)
— Prüft, ob ein Schlüssel existiert
Beispielcode:
// HashMap erzeugen
import java.util.*;
Map<String, Integer> map = new HashMap<>();
map.put("apfel", 3);
map.put("banane", 5);
// Wert abrufen
int count = map.get("apfel"); // 3
Vorteile und Nachteile
Vorteile | Nachteile |
---|---|
Schneller Zugriff per Schlüssel (O(1) im Schnitt) | Keine Reihenfolge der Elemente |
Flexibler Umgang mit beliebigen Objekten | Nicht threadsicher (bei Bedarf ConcurrentHashMap verwenden) |
Erlaubt null als Schlüssel und Wert |
Kann bei schlechtem hashCode() langsam werden |
Wichtig:
-
Ist
equals()
undhashCode()
falsch implementiert, funktioniert HashMap nicht korrekt! - HashMap garantiert keine Reihenfolge der Einträge.