HashMap: Unterschied zwischen den Versionen

Aus FI-Wiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 20: Zeile 20:
</syntaxhighlight>
</syntaxhighlight>


== Zugriff auf Werte ==
== HashMap in Java ==
 
=== Erstellen ===
<syntaxhighlight lang="java">
HashMap<String, Double> map = new HashMap<>();
</syntaxhighlight>
 
=== Elemente hinzufügen ===
'''put(K key, V value)''' – Element hinzufügen / überschreiben
<syntaxhighlight lang="java">
map.put("Laptop", 999.99);
map.put("Maus", 19.99);
</syntaxhighlight>
 
=== Wert abrufen ===
'''get(Object key)'''
<syntaxhighlight lang="java">
double preis = map.get("Laptop");
</syntaxhighlight>
 
'''getOrDefault(Object key, V defaultValue)'''
<syntaxhighlight lang="java">
double preis = map.getOrDefault("Monitor", 0.0);
</syntaxhighlight>
 
=== Prüfen ===
'''containsKey(Object key)'''
<syntaxhighlight lang="java">
map.containsKey("Maus");
</syntaxhighlight>
 
'''containsValue(Object value)'''
<syntaxhighlight lang="java">
map.containsValue(19.99);
</syntaxhighlight>
 
=== Elemente entfernen ===
'''remove(Object key)'''
<syntaxhighlight lang="java">
map.remove("Maus");
</syntaxhighlight>
 
'''remove(Object key, Object value)'''
<syntaxhighlight lang="java">
map.remove("Laptop", 999.99);
</syntaxhighlight>
 
=== Werte ändern ===
'''replace(K key, V value)'''
<syntaxhighlight lang="java">
map.replace("Laptop", 899.99);
</syntaxhighlight>
 
'''replace(K key, V oldValue, V newValue)'''
<syntaxhighlight lang="java">
map.replace("Laptop", 999.99, 899.99);
</syntaxhighlight>
 
=== Größe und Zustand ===
'''size()'''
<syntaxhighlight lang="java">
int anzahl = map.size();
</syntaxhighlight>
 
'''isEmpty()'''
<syntaxhighlight lang="java">
map.isEmpty();
</syntaxhighlight>
 
'''clear()'''
<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
int alter = personen.get("Anna");
map.clear();
</syntaxhighlight>
</syntaxhighlight>


== Überprüfen, ob ein Schlüssel existiert ==
=== Iteration ===
'''keySet()''' – alle Schlüssel
<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
if (personen.containsKey("Max")) {
for (String key : map.keySet()) {
     System.out.println("Max ist vorhanden");
     System.out.println(key);
}
}
</syntaxhighlight>
</syntaxhighlight>


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


== Iteration über eine HashMap ==
'''entrySet()''' – Schlüssel und Werte (empfohlen)
<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>
=== Erweiterte Methoden ===
'''putIfAbsent(K key, V value)'''
<syntaxhighlight lang="java">
map.putIfAbsent("Tablet", 299.99);
</syntaxhighlight>
'''compute(K key, BiFunction)'''
<syntaxhighlight lang="java">
map.compute("Laptop", (k, v) -> v - 100);
</syntaxhighlight>
'''computeIfAbsent(K key, Function)'''
<syntaxhighlight lang="java">
map.computeIfAbsent("Monitor", k -> 199.99);
</syntaxhighlight>
'''computeIfPresent(K key, BiFunction)'''
<syntaxhighlight lang="java">
map.computeIfPresent("Laptop", (k, v) -> v * 0.9);
</syntaxhighlight>
'''merge(K key, V value, BiFunction)'''
<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 ==
== typische Einsatzgebiete ==

Version vom 22. April 2026, 05:49 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

Beispiel: Erstellen und Befüllen einer HashMap

import java.util.HashMap;

HashMap<String, Integer> personen = new HashMap<>();

personen.put("Anna", 25);
personen.put("Max", 31);
personen.put("Lisa", 28);

HashMap in Java

Erstellen

HashMap<String, Double> map = new HashMap<>();

Elemente hinzufügen

put(K key, V value) – Element hinzufügen / überschreiben

map.put("Laptop", 999.99);
map.put("Maus", 19.99);

Wert abrufen

get(Object key)

double preis = map.get("Laptop");

getOrDefault(Object key, V defaultValue)

double preis = map.getOrDefault("Monitor", 0.0);

Prüfen

containsKey(Object key)

map.containsKey("Maus");

containsValue(Object value)

map.containsValue(19.99);

Elemente entfernen

remove(Object key)

map.remove("Maus");

remove(Object key, Object value)

map.remove("Laptop", 999.99);

Werte ändern

replace(K key, V value)

map.replace("Laptop", 899.99);

replace(K key, V oldValue, V newValue)

map.replace("Laptop", 999.99, 899.99);

Größe und Zustand

size()

int anzahl = map.size();

isEmpty()

map.isEmpty();

clear()

map.clear();

Iteration

keySet() – alle Schlüssel

for (String key : map.keySet()) {
    System.out.println(key);
}

values() – alle Werte

for (Double value : map.values()) {
    System.out.println(value);
}

entrySet() – Schlüssel und Werte (empfohlen)

for (Map.Entry<String, Double> e : map.entrySet()) {
    System.out.println(e.getKey() + " : " + e.getValue());
}

Erweiterte Methoden

putIfAbsent(K key, V value)

map.putIfAbsent("Tablet", 299.99);

compute(K key, BiFunction)

map.compute("Laptop", (k, v) -> v - 100);

computeIfAbsent(K key, Function)

map.computeIfAbsent("Monitor", k -> 199.99);

computeIfPresent(K key, BiFunction)

map.computeIfPresent("Laptop", (k, v) -> v * 0.9);

merge(K key, V value, BiFunction)

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.