Java HashMap meistern: Operationen, Beispiele und Best Practices
Java HashMap meistern
Erkunden Sie die Java HashMap-Klasse – ihre Kernfunktionen, gängige Operationen und praktische Beispiele – damit Sie sie sicher in realen Anwendungen einsetzen können.
Die HashMap-Klasse, Teil von Javas Collections Framework, implementiert eine Hashtabelle, die Daten in Schlüssel/Wert-Paaren speichert. Jeder Schlüssel ist einzigartig und fungiert als Identifikator für seinen assoziierten Wert. Die Klasse implementiert das Map-Interface und bietet eine vielseitige API für Datenmanipulation.

HashMap erstellen
Beginnen Sie mit dem Import des java.util.HashMap-Pakets:
import java.util.HashMap;
Dann instanziieren Sie die Map. Sie können generische Schlüssel- und Werttypen K und V angeben oder auf Type Inference vertrauen:
HashMap<K, V> numbers = new HashMap<>();
Beispiel mit konkreten Typen:
HashMap<String, Integer> numbers = new HashMap<>();
Beispiel 1: Grundlegende HashMap-Erstellung
import java.util.HashMap; class Main { public static void main(String[] args) { HashMap<String, Integer> languages = new HashMap<>(); languages.put("Java", 8); languages.put("JavaScript", 1); languages.put("Python", 3); System.out.println("HashMap: " + languages); } }
Ausgabe
HashMap: {Java=8, JavaScript=1, Python=3}
Kernoperationen auf HashMap
Die HashMap-Klasse bietet einen reichen Methodensatz. Unten decken wir die häufigsten ab:
- Elemente hinzufügen
- Elemente abrufen
- Elemente aktualisieren
- Elemente entfernen
1. Elemente hinzufügen
Verwenden Sie put(), um ein Schlüssel/Wert-Paar einzufügen. Falls der Schlüssel bereits existiert, wird der Wert ersetzt.
import java.util.HashMap; class Main { public static void main(String[] args) { HashMap<String, Integer> numbers = new HashMap<>(); System.out.println("Initial HashMap: " + numbers); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("HashMap after put(): " + numbers); } }
Ausgabe
Initial HashMap: {} HashMap after put(): {One=1, Two=2, Three=3}
Schlüssel: String, Wert: Integer in diesem Beispiel.
2. Auf Elemente zugreifen
Rufen Sie einen Wert mit get(key) ab. Die Methode gibt null zurück, falls der Schlüssel abwesend ist.
import java.util.HashMap; class Main { public static void main(String[] args) { HashMap<Integer, String> languages = new HashMap<>(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); String value = languages.get(1); System.out.println("Value at key 1: " + value); } }
Ausgabe
HashMap: {1=Java, 2=Python, 3=JavaScript} Value at key 1: Java
Sie können auch den kompletten Keyset, Value-Collection oder Entry-Set via keySet(), values() und entrySet() erhalten:
import java.util.HashMap; class Main { public static void main(String[] args) { HashMap<Integer, String> languages = new HashMap<>(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); System.out.println("Keys: " + languages.keySet()); System.out.println("Values: " + languages.values()); System.out.println("Entries: " + languages.entrySet()); } }
Ausgabe
HashMap: {1=Java, 2=Python, 3=JavaScript} Keys: [1, 2, 3] Values: [Java, Python, JavaScript] Entries: [1=Java, 2=Python, 3=JavaScript]
3. Werte aktualisieren
Die replace(key, newValue)-Methode tauscht den bestehenden Wert für den gegebenen Schlüssel aus. Sie gibt den alten Wert oder null zurück, falls der Schlüssel abwesend war.
import java.util.HashMap; class Main { public static void main(String[] args) { HashMap<Integer, String> languages = new HashMap<>(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("Original HashMap: " + languages); languages.replace(2, "C++"); System.out.println("After replace(): " + languages); } }
Ausgabe
Original HashMap: {1=Java, 2=Python, 3=JavaScript} After replace(): {1=Java, 2=C++, 3=JavaScript}
4. Elemente entfernen
Löschen Sie ein Mapping mit remove(key), das den entfernten Wert zurückgibt. Für bedingtes Entfernen nutzen Sie remove(key, value), das nur entfernt, falls das aktuelle Mapping den angegebenen Wert matcht.
import java.util.HashMap; class Main { public static void main(String[] args) { HashMap<Integer, String> languages = new HashMap<>(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); String removed = languages.remove(2); System.out.println("Removed value: " + removed); System.out.println("Updated HashMap: " + languages); } }
Ausgabe
HashMap: {1=Java, 2=Python, 3=JavaScript} Removed value: Python Updated HashMap: {1=Java, 3=JavaScript}
Zusätzliche HashMap-Methoden
| Methode | Beschreibung |
|---|---|
| clear() | Entfernt alle Mappings |
| compute() | Berechnet neuen Wert für Schlüssel |
| computeIfAbsent() | Berechnet Wert nur falls Schlüssel fehlt |
| computeIfPresent() | Berechnet Wert nur falls Schlüssel existiert |
| merge() | Führt neues Mapping mit bestehendem zusammen |
| clone() | Erstellt flache Kopie |
| containsKey() | Prüft auf spezifischen Schlüssel |
| containsValue() | Prüft auf spezifischen Wert |
| size() | Anzahl Schlüssel/Wert-Paare |
| isEmpty() | Ob Map leer ist |
Durch eine HashMap iterieren
Nutzen Sie eine for-each-Schleife zum Durchlaufen von Keys, Values oder Entries. Importieren Sie java.util.Map.Entry für Entry-Iteration.
import java.util.HashMap; import java.util.Map.Entry; class Main { public static void main(String[] args) { HashMap<Integer, String> languages = new HashMap<>(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); System.out.print("Keys: "); for (Integer key : languages.keySet()) { System.out.print(key + ", "); } System.out.print("\nValues: "); for (String value : languages.values()) { System.out.print(value + ", "); } System.out.print("\nEntries: "); for (Entry<Integer, String> entry : languages.entrySet()) { System.out.print(entry + ", "); } } }
Ausgabe
HashMap: {1=Java, 2=Python, 3=JavaScript} Keys: 1, 2, 3, Values: Java, Python, JavaScript, Entries: 1=Java, 2=Python, 3=JavaScript,
HashMap aus einer anderen Map erstellen
Instanziieren Sie eine HashMap mit dem Inhalt einer existierenden Map:
import java.util.HashMap; import java.util.TreeMap; class Main { public static void main(String[] args) { TreeMap<String, Integer> evenNumbers = new TreeMap<>(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("TreeMap: " + evenNumbers); HashMap<String, Integer> numbers = new HashMap<>(evenNumbers); numbers.put("Three", 3); System.out.println("HashMap: " + numbers); } }
Ausgabe
TreeMap: {Four=4, Two=2} HashMap: {Two=2, Three=3, Four=4}
Optionale Konstruktorparameter erlauben das Setzen der initialen Kapazität und des Load Factors:
HashMap<K, V> numbers = new HashMap<>(8, 0.6f);
- Kapazität: 8 Einträge vor Rehashing.
- Load Factor: 0.6 triggert Resize bei 60% Füllung.
Defaults sind capacity = 16 und load factor = 0.75.
Für tiefere Einblicke konsultieren Sie die offizielle Java-Dokumentation oder autoritative Ressourcen wie "Effective Java" von Joshua Bloch.
Java
- Java Operatoren meistern: Typen, Syntax und praktische Beispiele
- Java Kommentare: Typen, Verwendung und Best Practices
- Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
- Java Strings meistern: Erstellung, Methoden und Best Practices
- Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
- Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
- Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
- Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
- Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
- Java Vector verstehen: Verwendung, Funktionen und Vergleich mit ArrayList