HashMap: Unterschied zwischen den Versionen

Aus FI-Wiki
Die Seite wurde neu angelegt: „== HashMap == 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 nich…“
 
 
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== HashMap ==
Eine '''HashMap''' ist eine Datenstruktur aus der Java-Collections-API, die Daten als '''Schlüssel-Wert-Paare''' speichert.   
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.
Jeder Schlüssel ist eindeutig und ermöglicht einen sehr schnellen Zugriff auf den zugehörigen Wert.


=== Eigenschaften ===
== Eigenschaften ==
* speichert Daten als '''key → value'''   
* speichert Daten als '''key → value'''   
* jeder Schlüssel darf nur einmal vorkommen   
* jeder Schlüssel darf nur einmal vorkommen   
Zeile 11: Zeile 9:
* Reihenfolge ist nicht garantiert
* Reihenfolge ist nicht garantiert


=== Beispiel: 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, Integer> personen = new HashMap<>();
HashMap<String, Double> map = new HashMap<>();
map.put("Trackball", 89.99);
 
</syntaxhighlight>
 
== Elemente hinzufügen ==
'''Fügt ein Element hinzu oder überschreibt den Wert, wenn der Schlüssel bereits existiert.'''
<syntaxhighlight lang="java">
map.put("Laptop", 999.99);
map.put("Maus", 19.99);
</syntaxhighlight>
 
== Wert abrufen ==
'''Gibt den Wert zu einem Schlüssel zurück.'''
<syntaxhighlight lang="java">
double preis = map.get("Laptop");
</syntaxhighlight>
 
'''Gibt einen Standardwert zurück, wenn der Schlüssel nicht existiert.'''
<syntaxhighlight lang="java">
double preis = map.getOrDefault("Monitor", 0.0);
</syntaxhighlight>
 
== Prüfen ==
'''Prüft, ob ein bestimmter Schlüssel vorhanden ist.'''
<syntaxhighlight lang="java">
map.containsKey("Maus");
</syntaxhighlight>


personen.put("Anna", 25);
'''Prüft, ob ein bestimmter Wert vorhanden ist.'''
personen.put("Max", 31);
<syntaxhighlight lang="java">
personen.put("Lisa", 28);
map.containsValue(19.99);
</syntaxhighlight>
</syntaxhighlight>


=== Zugriff auf Werte ===
== Elemente entfernen ==
'''Entfernt ein Element anhand des Schlüssels.'''
<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
int alter = personen.get("Anna");
map.remove("Maus");
</syntaxhighlight>
</syntaxhighlight>


=== Überprüfen, ob ein Schlüssel existiert ===
'''Entfernt ein Element nur, wenn Schlüssel und Wert übereinstimmen.'''
<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
if (personen.containsKey("Max")) {
map.remove("Laptop", 999.99);
     System.out.println("Max ist vorhanden");
</syntaxhighlight>
 
== Werte ändern ==
'''Ersetzt den Wert eines vorhandenen Schlüssels.'''
<syntaxhighlight lang="java">
map.replace("Laptop", 899.99);
</syntaxhighlight>
 
'''Ersetzt den Wert nur, wenn der alte Wert übereinstimmt.'''
<syntaxhighlight lang="java">
map.replace("Laptop", 999.99, 899.99);
</syntaxhighlight>
 
== Größe und Zustand ==
'''Gibt die Anzahl der Einträge zurück.'''
<syntaxhighlight lang="java">
int anzahl = map.size();
</syntaxhighlight>
 
'''Prüft, ob die HashMap leer ist.'''
<syntaxhighlight lang="java">
map.isEmpty();
</syntaxhighlight>
 
'''Entfernt alle Einträge aus der HashMap.'''
<syntaxhighlight lang="java">
map.clear();
</syntaxhighlight>
 
== Iteration ==
'''Gibt alle Schlüssel der HashMap aus.'''
<syntaxhighlight lang="java">
for (String key : map.keySet()) {
     System.out.println(key);
}
}
</syntaxhighlight>
</syntaxhighlight>


=== Werte entfernen ===
'''Gibt alle Werte der HashMap aus.'''
<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
personen.remove("Lisa");
for (Double value : map.values()) {
    System.out.println(value);
}
</syntaxhighlight>
</syntaxhighlight>


=== Iteration über eine HashMap ===
'''Gibt Schlüssel und Werte gemeinsam aus (empfohlene Variante).'''
<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
for (String name : personen.keySet()) {
for (Map.Entry<String, Double> e : map.entrySet()) {
     System.out.println(name + " ist " + personen.get(name) + " Jahre alt.");
     System.out.println(e.getKey() + " : " + e.getValue());
}
}
</syntaxhighlight>
</syntaxhighlight>


=== typische Einsatzgebiete ===
== Erweiterte Methoden ==
'''Fügt nur ein Element hinzu, wenn der Schlüssel noch nicht existiert.'''
<syntaxhighlight lang="java">
map.putIfAbsent("Tablet", 299.99);
</syntaxhighlight>
 
'''Berechnet einen neuen Wert basierend auf dem alten Wert.'''
<syntaxhighlight lang="java">
map.compute("Laptop", (k, v) -> v - 100);
</syntaxhighlight>
 
'''Erstellt einen Wert nur, wenn der Schlüssel noch nicht existiert.'''
<syntaxhighlight lang="java">
map.computeIfAbsent("Monitor", k -> 199.99);
</syntaxhighlight>
 
'''Ändert einen Wert nur, wenn der Schlüssel existiert.'''
<syntaxhighlight lang="java">
map.computeIfPresent("Laptop", (k, v) -> v * 0.9);
</syntaxhighlight>
 
'''Verknüpft alten und neuen Wert miteinander (z. B. zum Addieren).'''
<syntaxhighlight lang="java">
map.merge("Laptop", 100.0, (alt, neu) -> alt + neu);
</syntaxhighlight>
 
=== Fazit ===
* Wichtige Methoden: '''put''', '''get''', '''remove''', '''containsKey'''
* Iteration: '''entrySet()'''
* Erweiterte Verarbeitung: '''compute''', '''merge'''
 
== typische Einsatzgebiete ==
* Zuordnung von IDs zu Objekten   
* Zuordnung von IDs zu Objekten   
* Konfigurationen (Schlüssel → Einstellung)   
* Konfigurationen (Schlüssel → Einstellung)   
Zeile 52: Zeile 145:
* schnelle Suchstrukturen
* schnelle Suchstrukturen


=== Kurzmerksatz ===
== Kurzmerksatz ==
'''Eine HashMap speichert Schlüssel-Wert-Paare und ermöglicht sehr schnellen Zugriff über eindeutige Schlüssel.'''
'''Eine HashMap speichert Schlüssel-Wert-Paare und ermöglicht sehr schnellen Zugriff über eindeutige Schlüssel.'''

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.