Eine TreeMap implementiert NavigableMap und speichert eine
sortierte Abfolge von Element-Paaren, bei denen jeweils ein Wert (Value)
einem Schlüssel (Key) zugewiesen ist. Die Sortierung erfolgt anhand des
Keys.
Das Beispiel deklariert eine TreeMap und initialisiert sie
mit drei Key-Value-Paaren. Hier wurden für beides Strings verwendet.
TreeMap<String, String> tm = new TreeMap<String, String>();
tm.put("2", "Punkt zwei");
tm.put("1", "Punkt eins");
tm.put("3", "Punkt drei");
for (String elem : tm.keySet())
System.out.println(elem + " - " + tm.get(elem));
Sie können jedoch durch andere Referenzdatentypen ersetzt werden, die
jedoch vergleichbar sein müssen, um die Sortierung zu ermöglichen.
Die Vergleichbarkeit regelt das Interface
Comparable. Ein Beispiel
für die Gewährleistung des Vergleichs von Referenzdatentypen
findet sich im Artikel
Objekte
sortieren. Collections können nur Subtypen von
Object aufnehmen, akzeptieren beim Eintrag mit
add() jedoch auch primitive Datentypen, da diese
durch
Boxing
in Objekte der jeweiligen Wrapper-Klasse umgewandelt und als solche
gespeichert werden.
TreeMap<Integer, String> tm = new TreeMap<Integer, String>();
tm.put(2, "Punkt zwei");
tm.put(1, "Punkt eins");
tm.put(3, "Punkt drei");
for (Integer elem : tm.keySet())
System.out.println(elem + " - " + tm.get(elem));
Die Schlüssel müssen mit Hilfe der Methoden hashCode() und equals()
untereinander vergleichbar sein, da im anderen Fall eine ClassCastException
geworfen wird. Der Eintrag des char-Keys demonstriert dies. Die
Werte können hingegen beliebigen Datentypen entsprechen, wobei wie o.a.
primitve Datentypen in Objekte gewandelt werden, die beim Auslesen ggf.
entsprechend explizit zurück gecastet werden müssen.
TreeMap<Object, Object> tm = new TreeMap<Object, Object>();
tm.put("4", "vier");
tm.put("2", new Point(150, 20));
tm.put('c', new Character('c')); // ClassCastException
tm.put("3", new int[] { 7, 273, 34 });
for (Object elem : tm1.keySet())
System.out.println(elem + " - " + tm1.get(elem));
Die folgende Tabelle listet einige weitere Methoden von
TreeMap,
deren Funktionalität im nachfolgenden Quelltext demonstriert wird.
Siehe hierzu auch
Sammlungen
und Listen → Sammlungen
| TreeMap.put(K key, V
value) |
Fügt ein Wertepaar in eine TreeMap ein. Wenn der Key bereits
existiert, wird statt dessen der zugehörige Wert überschrieben,
sodass ein Key nie doppelt vorhanden sein kann. |
| TreeMap.size() |
Gibt die Anzahl der Einträge in einer TreeMap zurück. |
| TreeMap.remove(Object key) |
Entfernt den Eintrag mit dem Schlüssel key aus einer
TreeMap. |
| TreeMap.clear() |
Leert eine TreeMap durch Entfernen der Schlüssel. |
import java.util.TreeMap;
public class TreeMapBeispiel {
public static void main(String[] args) {
TreeMap<String, String> tm = new TreeMap<String, String>();
String s;
tm.put("2", "Hund");
tm.put("1", "Katze");
tm.put("3", "Regenwurm");
System.out.println("Durchlauf 1:");
for (String elem : tm.keySet()) {
s = tm.get(elem);
System.out.println(elem + " - " + s);
}
tm.put("1", "Pferd");
System.out.println("\nDurchlauf 2:");
for (String elem : tm.keySet()) {
s = tm.get(elem);
System.out.println(elem + " - " + s);
}
System.out.println("\nKatze vorhanden? " + tm.containsValue("Katze"));
tm.put("4", "Hund");
System.out.println("\nAnzahl Elemente nach einf\u00FCgen von '4': "
+ tm.size());
System.out.println("\nDurchlauf 3:");
for (String elem : tm.keySet()) {
s = tm.get(elem);
System.out.println(elem + " - " + s);
}
tm.remove("4");
System.out.println("\nAnzahl Elemente nach entfernen von '4': "
+ tm.size());
tm.clear();
System.out.println("\nAnzahl Elemente nach clear(): " + tm.size());
}
}