In der Java-Welt begegnet man früher oder später sogenannten Maps (der Map-Schnittstelle) – und das völlig zu Recht! Sie ist ein grundlegender Bestandteil der Java Collection Frameworks und ermöglicht es, anders als Listen, Daten als Schlüssel-Wert-Paare zu speichern.
Eine Map ist grundsätzlich erstmal eine Datenstruktur, in der jeder Schlüssel (Key) genau einem Wert (Value) zugeordnet ist. Das kennt man z. B. aus Wörterbüchern:
In Java können sowohl Schlüssel als auch Werte beliebige Objekttypen sein (z. B. String, Integer, eigene Klassen usw.). Wichtig ist, dass es keine primitiven Datentypen sein dürfen.
import java.util.HashMap;
import java.util.Map;
public class MapBeispiel {
public static void main(String[] args) {
// Eine neue Map erstellen
Map<String, String> telefonbuch = new HashMap<>();
// Einträge hinzufuegen
telefonbuch.put("Anna", "0151-1234567");
telefonbuch.put("Bernd", "0170-9876543");
telefonbuch.put("Clara", "0160-5551234");
// Zugriff auf einen bestimmten Eintrag
String nummerAnna = telefonbuch.get("Anna");
System.out.println("Annas Nummer: " + nummerAnna);
// Alle Eintraege durchlaufen
System.out.println("Alle Einträge im Telefonbuch:");
for (Map.Entry<String, String> eintrag : telefonbuch.entrySet()) {
System.out.println(eintrag.getKey() + " → " + eintrag.getValue());
}
// Existenz eines Schluessels pruefen
if (telefonbuch.containsKey("Bernd")) {
System.out.println("Bernd ist im Telefonbuch.");
}
// Eintrag entfernen
telefonbuch.remove("Clara");
// Anzahl der Eintraege
System.out.println("Anzahl der Kontakte: " + telefonbuch.size());
}
}
Code |
Erklärung |
Map<String, String> telefonbuch = new HashMap<>(); |
Erstellt eine neue Map, die als Schlüssel und Wert jeweils String -Objekte erwartet. |
put("Anna", "0151-1234567"); |
Fügt einen Eintrag hinzu – der Name ist der Schlüssel, die Telefonnummer der Wert. Es ist wichtig zu erwähnen, dass ein erneuter put auf den Key Anna die Value überschreibt! |
get("Anna") |
Gibt den Wert (die Value) (also die Telefonnummer) für den Schlüssel „Anna“ zurück. |
entrySet() |
Gibt eine Menge aller Schlüssel-Wert-Paare zurück, ideal für Schleifen. |
containsKey("Bernd") |
Prüft, ob der Schlüssel „Bernd“ enthalten ist. |
remove("Clara") |
Entfernt den Eintrag mit dem Schlüssel „Clara“. |
size() |
Gibt die Anzahl der enthaltenen Einträge zurück. |
Maps sind ideal, wenn:
Beispiele aus der Praxis:
Maps gibt es, genau wie Listen, in unterschiedlichen Implementierungen. Beim Einsatz einer HashMap ist der Zugriff sehr schnell aber die Reihenfolge der hinzugefügten Objekte ist nicht garantiert da hier speicheroptimiert gearbeitet wird. Eine TreeMap hingegen sortiert die Einträge nach ihrem Schlüssel für den Zugriff und ist somit etwas langsamer. Eine LinkedHashMap garantiert dir, dass die Einträge in der Reihenfolge vorhanden sind, in der du sie hinzugefügt hast.
Maps bieten tolle und vielseitige Möglichkeiten mit Daten umzugehen und ermöglichen einen unkomplizierten Zugriff. Sobald man das Prinzip der Schlüssel-Wert-Zuordnung einmal verstanden hat, lassen sich viele praktische Anwendungsfälle damit Elegant lösen.
Hast du auch schon einmal mit Maps gearbeitet? Was gefällt dir dabei besonders gut? Lass es mich gern in den Kommentare wissen.