HashMap: Unterschied zwischen den Versionen
| (6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 10: | Zeile 10: | ||
== Erstellen und Befüllen einer HashMap == | == Erstellen und Befüllen einer HashMap == | ||
'''Erstellt eine HashMap und fügt den ersten Eintrag hinzu.''' | |||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
import java.util.HashMap; | import java.util.HashMap; | ||
HashMap<String, | HashMap<String, Double> map = new HashMap<>(); | ||
map.put("Trackball", 89.99); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Elemente hinzufügen == | == Elemente hinzufügen == | ||
''' | '''Fügt ein Element hinzu oder überschreibt den Wert, wenn der Schlüssel bereits existiert.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.put("Laptop", 999.99); | map.put("Laptop", 999.99); | ||
| Zeile 29: | Zeile 27: | ||
== Wert abrufen == | == Wert abrufen == | ||
''' | '''Gibt den Wert zu einem Schlüssel zurück.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
double preis = map.get("Laptop"); | double preis = map.get("Laptop"); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Gibt einen Standardwert zurück, wenn der Schlüssel nicht existiert.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
double preis = map.getOrDefault("Monitor", 0.0); | double preis = map.getOrDefault("Monitor", 0.0); | ||
| Zeile 40: | Zeile 38: | ||
== Prüfen == | == Prüfen == | ||
''' | '''Prüft, ob ein bestimmter Schlüssel vorhanden ist.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.containsKey("Maus"); | map.containsKey("Maus"); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Prüft, ob ein bestimmter Wert vorhanden ist.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.containsValue(19.99); | map.containsValue(19.99); | ||
| Zeile 51: | Zeile 49: | ||
== Elemente entfernen == | == Elemente entfernen == | ||
''' | '''Entfernt ein Element anhand des Schlüssels.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.remove("Maus"); | map.remove("Maus"); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Entfernt ein Element nur, wenn Schlüssel und Wert übereinstimmen.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.remove("Laptop", 999.99); | map.remove("Laptop", 999.99); | ||
| Zeile 62: | Zeile 60: | ||
== Werte ändern == | == Werte ändern == | ||
''' | '''Ersetzt den Wert eines vorhandenen Schlüssels.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.replace("Laptop", 899.99); | map.replace("Laptop", 899.99); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Ersetzt den Wert nur, wenn der alte Wert übereinstimmt.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.replace("Laptop", 999.99, 899.99); | map.replace("Laptop", 999.99, 899.99); | ||
| Zeile 73: | Zeile 71: | ||
== Größe und Zustand == | == Größe und Zustand == | ||
''' | '''Gibt die Anzahl der Einträge zurück.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
int anzahl = map.size(); | int anzahl = map.size(); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Prüft, ob die HashMap leer ist.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.isEmpty(); | map.isEmpty(); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Entfernt alle Einträge aus der HashMap.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.clear(); | map.clear(); | ||
| Zeile 89: | Zeile 87: | ||
== Iteration == | == Iteration == | ||
''' | '''Gibt alle Schlüssel der HashMap aus.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
for (String key : map.keySet()) { | for (String key : map.keySet()) { | ||
| Zeile 96: | Zeile 94: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Gibt alle Werte der HashMap aus.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
for (Double value : map.values()) { | for (Double value : map.values()) { | ||
| Zeile 103: | Zeile 101: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Gibt Schlüssel und Werte gemeinsam aus (empfohlene Variante).''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
for (Map.Entry<String, Double> e : map.entrySet()) { | for (Map.Entry<String, Double> e : map.entrySet()) { | ||
| Zeile 111: | Zeile 109: | ||
== Erweiterte Methoden == | == Erweiterte Methoden == | ||
''' | '''Fügt nur ein Element hinzu, wenn der Schlüssel noch nicht existiert.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.putIfAbsent("Tablet", 299.99); | map.putIfAbsent("Tablet", 299.99); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Berechnet einen neuen Wert basierend auf dem alten Wert.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.compute("Laptop", (k, v) -> v - 100); | map.compute("Laptop", (k, v) -> v - 100); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Erstellt einen Wert nur, wenn der Schlüssel noch nicht existiert.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.computeIfAbsent("Monitor", k -> 199.99); | map.computeIfAbsent("Monitor", k -> 199.99); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Ändert einen Wert nur, wenn der Schlüssel existiert.''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.computeIfPresent("Laptop", (k, v) -> v * 0.9); | map.computeIfPresent("Laptop", (k, v) -> v * 0.9); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Verknüpft alten und neuen Wert miteinander (z. B. zum Addieren).''' | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
map.merge("Laptop", 100.0, (alt, neu) -> alt + neu); | map.merge("Laptop", 100.0, (alt, neu) -> alt + neu); | ||
Aktuelle Version vom 22. April 2026, 05:56 Uhr
Eine HashMap ist eine Datenstruktur aus der Java-Collections-API, die Daten als Schlüssel-Wert-Paare speichert. Jeder Schlüssel ist eindeutig und ermöglicht einen sehr schnellen Zugriff auf den zugehörigen Wert.
Eigenschaften
- speichert Daten als key → value
- jeder Schlüssel darf nur einmal vorkommen
- Werte dürfen mehrfach vorkommen
- sehr schnelle Zugriffe durch Hashing
- Reihenfolge ist nicht garantiert
Erstellen und Befüllen einer HashMap
Erstellt eine HashMap und fügt den ersten Eintrag hinzu.
import java.util.HashMap;
HashMap<String, Double> map = new HashMap<>();
map.put("Trackball", 89.99);
Elemente hinzufügen
Fügt ein Element hinzu oder überschreibt den Wert, wenn der Schlüssel bereits existiert.
map.put("Laptop", 999.99);
map.put("Maus", 19.99);
Wert abrufen
Gibt den Wert zu einem Schlüssel zurück.
double preis = map.get("Laptop");
Gibt einen Standardwert zurück, wenn der Schlüssel nicht existiert.
double preis = map.getOrDefault("Monitor", 0.0);
Prüfen
Prüft, ob ein bestimmter Schlüssel vorhanden ist.
map.containsKey("Maus");
Prüft, ob ein bestimmter Wert vorhanden ist.
map.containsValue(19.99);
Elemente entfernen
Entfernt ein Element anhand des Schlüssels.
map.remove("Maus");
Entfernt ein Element nur, wenn Schlüssel und Wert übereinstimmen.
map.remove("Laptop", 999.99);
Werte ändern
Ersetzt den Wert eines vorhandenen Schlüssels.
map.replace("Laptop", 899.99);
Ersetzt den Wert nur, wenn der alte Wert übereinstimmt.
map.replace("Laptop", 999.99, 899.99);
Größe und Zustand
Gibt die Anzahl der Einträge zurück.
int anzahl = map.size();
Prüft, ob die HashMap leer ist.
map.isEmpty();
Entfernt alle Einträge aus der HashMap.
map.clear();
Iteration
Gibt alle Schlüssel der HashMap aus.
for (String key : map.keySet()) {
System.out.println(key);
}
Gibt alle Werte der HashMap aus.
for (Double value : map.values()) {
System.out.println(value);
}
Gibt Schlüssel und Werte gemeinsam aus (empfohlene Variante).
for (Map.Entry<String, Double> e : map.entrySet()) {
System.out.println(e.getKey() + " : " + e.getValue());
}
Erweiterte Methoden
Fügt nur ein Element hinzu, wenn der Schlüssel noch nicht existiert.
map.putIfAbsent("Tablet", 299.99);
Berechnet einen neuen Wert basierend auf dem alten Wert.
map.compute("Laptop", (k, v) -> v - 100);
Erstellt einen Wert nur, wenn der Schlüssel noch nicht existiert.
map.computeIfAbsent("Monitor", k -> 199.99);
Ändert einen Wert nur, wenn der Schlüssel existiert.
map.computeIfPresent("Laptop", (k, v) -> v * 0.9);
Verknüpft alten und neuen Wert miteinander (z. B. zum Addieren).
map.merge("Laptop", 100.0, (alt, neu) -> alt + neu);
Fazit
- Wichtige Methoden: put, get, remove, containsKey
- Iteration: entrySet()
- Erweiterte Verarbeitung: compute, merge
typische Einsatzgebiete
- Zuordnung von IDs zu Objekten
- Konfigurationen (Schlüssel → Einstellung)
- Häufigkeitszählungen (z. B. Wortanzahl)
- schnelle Suchstrukturen
Kurzmerksatz
Eine HashMap speichert Schlüssel-Wert-Paare und ermöglicht sehr schnellen Zugriff über eindeutige Schlüssel.
