TreeMap

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());
    }
}