Zum Hauptinhalt springen

Assoziativspeicher (Maps)

Ein Assoziativspeicher (Map) ist eine Sammlung von Schlüssel-Wert-Paaren. Jeder Schlüssel (Key) ist eindeutig und verweist auf genau einen Wert (Value). Wegen dieser Struktur werden Assoziativspeicher auch als Wörterbücher bezeichnet.

Für den Zugriff auf Einträge, Schlüssel und Werte eines Assoziativspeichers stellt die Schnittstelle Map die Methoden Set<Entry<K, V>> entrySet(), Set<K> keySet() und Collection<V> values() bereit.

MainClass.java
public class MainClass {

public static void main(String[] args) {

Map<Integer, String> persons = new HashMap<>();
persons.put(829134, "Hans");
persons.put(209769, "Peter");
persons.put(723871, "Lisa");

for (Entry<Integer, String> entry : persons.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}

for (Integer id : persons.keySet()) {
System.out.println(id);
}

for (String name : persons.values()) {
System.out.println(name);
}

}

}

Die Klasse HashMap<K, V> implementiert den Assoziativspeicher als Hashtabelle. Voraussetzung ist, dass die Schlüsselklasse die Methoden int hashCode() und boolean equals(object: Object) korrekt überschrieben hat. Die Einträge liegen in einer Hashtabelle unsortiert vor.

IndexSchlüsselWert
0Hans2.3
2Peter1.7
13Lisa1.8
14Max4.2

Die Klasse TreeMap<K, V> implementiert den Assoziativspeicher als Binärbaum. Dabei wird ein balancierter Baum verwendet, sodass spezielle Einfüge- und Löschoperationen sicherstellen, dass der Baum nicht zu einer linearen Liste entartet. Die Einträge liegen sortiert vor, weshalb die Schlüsselklasse die Schnittstelle Comparable<T> implementieren oder dem Konstruktor ein Comparator übergeben werden muss.