TreeSet
Im folgenden Beispiel wird ein TreeSet
deklariert,
dem anschließend sieben String-Objekte mittels add()
hinzugefügt werden, der String Karl sogar zwei
Mal. Durch einen Iterator
wird das Set dann innerhalb einer for-Schleife durchlaufen,
ausgelesen und der jeweilige Wert ausgegeben. Hier erscheint Karl
nur ein Mal.
Die Methode size()
liefert die
Größe des Sets und gibt erwartungsgemäß 6
aus, da der String Karl nicht doppelt im TreeSet
vorkommen darf.
TreeSet<String> ts = new TreeSet<String>(); ts.add("Willi"); ts.add("Paul"); ts.add("Heinz"); ts.add("Anton"); ts.add("Karl"); ts.add("Karl"); ts.add("Achim"); for (Iterator<String> it = ts.iterator(); it.hasNext();) { System.out.println(it.next()); } System.out.println("Größe: " + ts.size()); // 6
TreeSet
kann beliebige sortierbare Objekte
speichern, bei denen jedoch die folgende Bedingung erfüllt
sein muss: Werden zwei im Set enthaltene Elemente e1
und e2
, von einem Comparator c
verglichen, so müssen der Ausdruck c.compare(e1, e2)==0
und die Methode e1.equals(e2)
den gleichen
boolschen Wert ergeben.
Eine weitere Möglichkeit, um ein TreeSet
zu
bilden, liegt darin, dem Konstrukor eine Collection
zu übergeben, beispielsweise eine ArrayList.
ArrayList<String> al = new ArrayList<String>(); al.add("Pizza"); al.add("Bockwurst"); al.add("Pizza"); al.add("Currywurst"); TreeSet<String> set = new TreeSet<String>(al); for (Iterator<String> it = set.iterator(); it.hasNext();) { System.out.println(it.next()); }
Wie in den beiden Beispielen demonstriert, kann das
Iterator-Objekt des Set durch die Methode iterator()
geholt werden. Soll das Durchlaufen des TreeSet
in
umgekehrter Reihenfolge erfolgen, kann hierzu die Methode descendingIterator()
verwendet werden:
Iterator<String> it = set.descendingIterator();
Die Sortierung eines TreeSet
erfolgt prinzipiell in
natürlicher Reihenfolge oder wahlweise über einen Comparator
,
der dem Konstruktor bei der Bildung des TreeSet
übergeben werden kann.
Die Klasse TreeSet
kennt eine Reihe von Methoden,
die zur Navigation in Objekten der Klasse Verwendung finden.
Einige sind in der unten stehenden Tabelle
gelistet.
Gesondert soll jedoch noch auf die Methoden lower(E
e)
und higher(E e)
hingewiesen werden.
Das ihnen übergebene Element muss nicht zwingend selbst in
dem TreeSet
enthalten sein, auf dem die Methode
aufgerufen wird. Es muss jedoch der o.a. Vergleichbarkeitsregel
genügen. So liefern die Aufrufe auf dem ersten oben
aufgeführten TreeSet
folgendes:
System.out.println(ts.lower("Manfred")); // Karl System.out.println(ts.higher("Manfred")); // Paul
Ein Element Manfred ist im TreeSet
nicht
enthalten. Es werden aber die Elemente zurück gegeben, die
bei einem Eintrag diesem vorangehen, bzw. nachfolgen
würden.
TreeSet.add(E e) |
Fügt ein Element in ein TreeSet ein,
wenn es nicht bereits enthalten ist.
|
TreeSet.size() |
Gibt die Anzahl der Einträge in einem TreeSet
zurück.
|
TreeSet.remove(E e) |
Entfernt den Eintrag e aus dem TreeSet .
|
TreeSet.clear() |
Leert ein TreeSet vollständig.
|
TreeSet.contains(Object o) |
Prüft, ob o im TreeSet
enthalten ist.
|
TreeSet.first() |
Liefert das erste gespeicherte Element. |
TreeSet.last() |
Liefert das letzte gespeicherte Element. |
TreeSet.lower(E e) |
Liefert das e vorangehende Element.
|
TreeSet.higher(E e) |
Liefert das e nachfolgende Element.
|
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.