TreeMap
Die Map akzeptiert keine null- oder
identische Schlüssel, wohl aber null-Werte.
Doppelt vorhandene Keys compilieren zwar, beim Auslesen
erhält man jedoch nur einen Eintrag. Da die
Sortierung nach Schlüsseln ein zentrales Prinzip
der Implementierung der TreeMap ist,
können Objekte hier natürlich auch nicht exakt
platziert werden.
Das folgende 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());
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.