treeset java tutorial with programming examples
Dieses Tutorial erklärt alles über TreeSet-Klasse, Implementierung, Iteration, TreeSet gegen HashSet, Java TreeSet-Beispiele usw.:
TreeSet in Java implementiert die Set-Schnittstelle (genauer gesagt SortedSet). Das TreeSet verwendet intern eine TreeMap zum Speichern von Daten. Standardmäßig werden die Objekte oder Elemente des TreeSet in aufsteigender Reihenfolge in der natürlichen Reihenfolge gespeichert.
Die TreeSet-Klasse, die TreeSet in Java implementiert, implementiert die 'NavigableSet'-Schnittstelle und erbt auch die AbstractSet-Klasse.
=> Hier finden Sie A-Z der Java-Schulungsanleitungen.
Was du lernen wirst:
TreeSet In Java
Beachten Sie, dass die TreeSet-Elemente auch explizit geordnet werden können, indem der angepasste Komparator zum Zeitpunkt der Erstellung eines TreeSet-Objekts unter Verwendung des spezifischen Konstruktorprototyps bereitgestellt wird.
Im Folgenden sind einige wichtige Merkmale von TreeSet aufgeführt:
- Die TreeSet-Klasse implementiert die SortedSet-Schnittstelle. Doppelte Elemente sind nicht zulässig.
- Die TreeSet-Klasse ist nicht synchronisiert.
- TreeSet behält die Einfügereihenfolge nicht bei, aber die Elemente in TreeSet werden gemäß der natürlichen Reihenfolge sortiert.
- TreeSet kann mithilfe eines benutzerdefinierten Komparators beim Erstellen eines TreeSet-Objekts bestellt werden.
- TreeSet wird normalerweise zum Speichern großer Mengen von Informationen verwendet, die auf natürliche Weise sortiert sind. Dies erleichtert den schnellen und schnellen Zugriff.
TreeSet-Klassendeklaration
Java bietet eine Klasse namens 'TreeSet', die die Funktionalität der TreeSet-Datenstruktur enthält. Die TreeSet-Klasse ist Teil des Pakets java.util.
Um die TreeSet-Klasse in das Java-Programm aufzunehmen, sollten Sie die folgende Importanweisung verwenden:
import java.util.TreeSet;
oder
import java.util.*;
Eine allgemeine Deklaration der TreeSet-Klasse lautet:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
Wie aus der Klassendeklaration hervorgeht, erweitert die TreeSet-Klasse AbstractSet und implementiert NavigableSet-, Cloneable- und Serializable-Schnittstellen.
Eine Klassenhierarchie für die TreeSet-Klasse ist unten angegeben:
Interne Implementierung
Wir wissen, dass TreeSet die NavigableSet-Schnittstelle implementiert und die SortedSet-Klasse erweitert.
Intern ist der TreeSet-Konstruktor wie folgt definiert:
public TreeSet() { this(new TreeMap()); }
Wie in der obigen Konstruktordefinition von TreeSet zu sehen ist, wird ein TreeMap-Objekt aufgerufen. Somit ist es intern ein TreeMap-Objekt, das für ein TreeSet implementiert ist. Daher wird beim Hinzufügen eines Elements zu TreeSet ein Schlüssel zu TreeMap hinzugefügt, in dem die Schlüssel standardmäßig sortiert sind.
Wie per Oracle-Dokumentation zu TreeSet ,
'Ein TreeSet ist eine NavigableSet-Implementierung, die auf einer TreeMap basiert.'
Java TreeSet Beispiel
Das folgende Java-Programm zeigt ein einfaches Beispiel, das TreeSet demonstriert. In diesem Programm haben wir ein einfaches Color TreeSet definiert. Wir fügen Elemente hinzu und zeigen sie dann an. Beachten Sie, dass die Elemente gemäß der natürlichen Reihenfolge angezeigt werden.
import java.util.*; class Main{ public static void main(String args[]){ //Create and add elements to TreeSet TreeSet color_TreeSet=new TreeSet(); color_TreeSet.add('Red'); color_TreeSet.add('Green'); color_TreeSet.add('Blue'); color_TreeSet.add('Yellow'); //Traverse the TreeSet and print elements one by one System.out.println('TreeSet Contents:'); Iterator iter=color_TreeSet.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } }
Ausgabe:
TreeSet-Inhalt:
Blau Grün Rot Gelb
Durch TreeSet iterieren
Um auf die einzelnen Elemente von TreeSet zugreifen zu können, müssen wir das TreeSet durchlaufen oder mit anderen Worten das TreeSet durchlaufen.
Dazu deklarieren wir einen Iterator für das TreeSet und verwenden diesen Iterator, um auf jedes Element zuzugreifen. Dazu verwenden wir die next () -Methode eines Iterators, der das nächste Element im TreeSet zurückgibt.
Das folgende Java-Programm demonstriert die Verwendung des Iterators zum Durchlaufen von TreeSet.
import java.util.TreeSet; import java.util.Iterator; class Main { public static void main(String[] args) { //create and initialize TreeSet TreeSet num_Treeset = new TreeSet(); num_Treeset.add(20); num_Treeset.add(5); num_Treeset.add(15); num_Treeset.add(25); num_Treeset.add(10); System.out.println('TreeSet: ' + num_Treeset); // Call iterator() method to define Iterator for TreeSet Iterator iter_set = num_Treeset.iterator(); System.out.print('TreeSet using Iterator: '); // Access TreeSet elements using Iterator while(iter_set.hasNext()) { System.out.print(iter_set.next()); System.out.print(', '); } } }
Ausgabe:
TreeSet: [5, 10, 15, 20, 25]
TreeSet mit Iterator: 5, 10, 15, 20, 25,
beste Software zum Erstellen von Flussdiagrammen
TreeSet-Komparator In Java
Standardmäßig ist das TreeSet natürlich geordnet. Wir können TreeSet auch in einer benutzerdefinierten Reihenfolge sortieren, indem wir eine neue Komparatorklasse definieren. In dieser Komparatorklasse müssen wir die Methode 'compare' überschreiben, um die Elemente des TreeSet zu sortieren. Dieses Komparatorobjekt wird dann an den TreeSet-Konstruktor übergeben.
Das folgende Java-Programm zeigt die Verwendung eines Komparators zum Sortieren des TreeSet.
import java.util.TreeSet; import java.util.Comparator; class Main { public static void main(String[] args) { // Create a TreeSet with user-defined comparator TreeSet cities = new TreeSet(new cities_Comparator()); //add elements to the comparator cities.add('Pune'); cities.add('Hyderabad'); cities.add('Indore'); cities.add('Bangaluru'); //print the contents of TreeSet System.out.println('TreeSet: ' + cities); } // Create a comparator class public static class cities_Comparator implements Comparator { //override compare method to compare two elements of the TreeSet @Override public int compare(String cities_one, String cities_two) { int value = cities_one.compareTo(cities_two); // sort elements in reverse order if (value > 0) { return -1; } else if (value <0) { return 1; } else { return 0; } } } }
Ausgabe:
TreeSet: [Pune, Indore, Hyderabad, Bangaluru]
Das obige Programm implementiert eine Comparator-Klasse, um das angegebene TreeSet alphabetisch in umgekehrter Reihenfolge zu sortieren.
Empfohlene Lektüre = >> Java Comparator-Schnittstelle
TreeSet-API / Methoden und Konstruktoren
In diesem Abschnitt wird die API der TreeSet-Klasse erläutert. Hier werden die Konstruktoren und Methoden erläutert, die von der TreeSet-Klasse bereitgestellt werden.
Die TreeSet-Klasse bietet überladene Konstruktoren zum Erstellen eines TreeSet-Objekts.
Wir haben diese Konstruktoren wie folgt tabellarisch aufgeführt:
Konstruktoren
Konstruktor-Prototyp | Beschreibung | |
---|---|---|
enthält | Boolescher Wert enthält (Objekt o) | Überprüft, ob TreeSet ein bestimmtes Element enthält. wahr, wenn vorhanden. |
TreeSet () | Standardkonstruktor zum Erstellen eines neuen, leeren TreeSet-Objekts. | |
TreeSet (Sammlung c) | Erstellt ein neues TreeSet-Objekt, das die Elemente aus der angegebenen Sammlung c enthält und nach natürlicher Reihenfolge sortiert ist. | |
TreeSet (Komparator Komparator) | Erstellt ein neues TreeSet-Objekt, das leer ist und gemäß dem angegebenen Komparator sortiert wird. | |
TreeSet (SortedSet s) | Erstellt ein neues TreeSet-Objekt, das Elemente aus bestimmten sortierten Sets enthält. |
Methoden
Lassen Sie uns als Nächstes die verschiedenen Methoden der TreeSet-Klasse tabellarisch darstellen.
Methode | Methodenprototyp | Beschreibung |
---|---|---|
hinzufügen | Boolesches Addieren (E e) | Fügt dem TreeSet ein bestimmtes Element hinzu, falls es noch nicht vorhanden ist. |
füge alle Hinzu | boolean addAll (Sammlung c) | Fügt alle Elemente in der angegebenen Sammlung c zur Menge hinzu. |
Decke | E Decke (E e) | Gibt ein Element zurück, das größer oder gleich e ist (kleinstes Element). oder null, wenn kein Element vorhanden ist. |
klar | void clear () | Löscht alle Elemente aus dem TreeSet. |
Klon | Objektklon () | Gibt eine flache Kopie des TreeSet-Objekts zurück. |
Komparator | Komparator Komparator () | Gibt den Komparator für das TreeSet oder null zurück, wenn die natürliche Reihenfolge verwendet wird. |
absteigender Iterator | Iterator absteigendIterator () | Gibt einen absteigenden Iterator über die Elemente im TreeSet zurück. |
descendingSet | NavigableSet descendingSet () | Gibt eine Ansicht der Elemente im TreeSet in umgekehrter Reihenfolge zurück. |
zuerst | E first () | Gibt das erste oder niedrigste Element im TreeSet zurück. |
Fußboden | E Etage (E e) | Gibt das Element zurück, das kleiner oder gleich dem angegebenen Element e im TreeSet ist. Gibt null zurück, wenn kein solches Element vorhanden ist. |
Headset | SortedSet headSet (E toElement) | Gibt eine Reihe von Elementen zurück, die strikt kleiner sind als das angegebene Element |
NavigableSet headSet (E toElement, einschließlich Boolescher Wert) | Gibt eine Reihe von Elementen zurück, die gleich (wenn inklusive = wahr) oder kleiner als element sind. | |
höher | E höher (E e) | Gibt das kleinste Element in dieser Menge zurück, das streng größer als das angegebene Element ist, oder null, wenn es kein solches Element gibt. |
ist leer | boolean isEmpty () | Überprüft, ob das TreeSet leer ist. Gibt true zurück, wenn es leer ist. |
Iterator | Iterator iterator () | Gibt einen Iterator (in aufsteigender Reihenfolge) für das TreeSet zurück. |
letzte | E last () | Gibt das höchste oder letzte Element im TreeSet zurück. |
niedriger | E niedriger (E e) | Gibt das Element (größtes Element) zurück, das streng kleiner ist als das angegebene Element e im TreeSet. |
pollFirst | E pollFirst () | Entfernt das erste (niedrigste) Element in der Menge und gibt es zurück. null, wenn die Menge leer ist. |
pollLast | E pollLast () | Entfernt das letzte (größte) Element in der Menge und gibt es zurück. null, wenn leer gesetzt. |
entfernen | boolean remove (Objekt o) | Entfernt das angegebene Element aus der Menge. |
Größe | int size () | Gibt die Größe oder Anzahl der im TreeSet vorhandenen Elemente zurück. |
Teilmenge | NavigableSet-Teilmenge (E fromElement, Boolean fromInclusive, E toElement, Boolean toInclusive) | Gibt eine Ansicht von Elementen zurück, die von Element zu Element reichen. |
SortedSet-Teilmenge (E fromElement, E toElement) | Gibt Ansichtselemente zurück, die von Element (einschließlich) bis Element (exklusiv) reichen. | |
tailSet | SortedSet tailSet (E fromElement) | Gibt eine Ansicht zurück, die Elemente enthält, die größer oder gleich dem angegebenen fromElement sind. |
NavigableSet tailSet (E fromElement, einschließlich Boolescher Wert) | Gibt eine Ansicht der Elemente zurück, die gleich (wenn inklusive wahr ist) oder größer als fromElement ist. |
TreeSet In Java 8
Bitte beachten Sie, dass für TreeSet in der Java 8-Version keine wesentlichen Änderungen vorgenommen wurden. Alle Methoden und Konstruktoren funktionieren in Java 8 und den späteren Versionen.
TreeSet-Implementierung in Java
Das folgende Java-Programm implementiert die meisten der oben beschriebenen TreeSet-Methoden.
import java.util.Iterator; import java.util.TreeSet; import java.util.ArrayList; public class Main { public static void main(String[] args) { //create a TreeSet of numbers TreeSet numSet = new TreeSet(); //add () method numSet.add(30); numSet.add(10); //declare and initialize an ArrayList ArrayList myList = new ArrayList(); myList.add(15); myList.add(25); myList.add(35); //addAll () method : add ArrayList elements to TreeSet numSet.addAll(myList); //define an iterator on TreeSet Iterator iterator = numSet.iterator(); System.out.print('Tree set contents: '); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); //ceiling () System.out.println('ceiling(25):' + numSet.ceiling(25)); //floor () System.out.println('floor(25):' + numSet.floor(25)); //contains () System.out.println('TreeSet contains(15):' + numSet.contains(15)); // isEmpty () if (numSet.isEmpty()) System.out.print('Tree Set is empty.'); else System.out.println('Tree Set size: ' + numSet.size()); // first () System.out.println('TreeSet First element: ' + numSet.first()); // last () System.out.println('TreeSet Last element: ' + numSet.last()); // remove () if (numSet.remove(30)) System.out.println('Element 30 removed from TreeSet'); else System.out.println('Element 30 doesn't exist!'); System.out.print('TreeSet after remove (): '); iterator = numSet.iterator(); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); //size () System.out.println('TreeSet size after remove (): ' + numSet.size()); //Headset () System.out.println('Headset : ' + numSet.headSet(35)); // clear () numSet.clear(); System.out.println('Tree Set size after clear (): ' + numSet.size()); } }
Ausgabe:
Inhalt des Baumsatzes: 10 15 25 30 35
Decke (25): 25
Etage (25): 25
TreeSet enthält (15): true
Baum Set Größe: 5
TreeSet Erstes Element: 10
TreeSet Letztes Element: 35
Element 30 aus TreeSet entfernt
TreeSet nach remove (): 10 15 25 35
TreeSet-Größe nach remove (): 4
Headset: [10, 15, 25]
Baum Größe nach clear () festlegen: 0
Im obigen Programm definieren wir ein TreeSet-Objekt und fügen ihm dann mithilfe der Methode 'add' Elemente hinzu. Als nächstes definieren wir eine ArrayList. Anschließend fügen wir TreeSet mithilfe der Methode 'addAll' Elemente von ArrayList hinzu. Später zeigen wir verschiedene TreeSet-Methoden wie Iterator, Decke, Boden, erster, letzter, enthält, Größe, leer usw.
TreeSet gegen HashSet
Schauen wir uns einige der Unterschiede zwischen TreeSet und HashSet an.
TreeSet | HashSet |
---|---|
Die Elemente werden gemäß der natürlichen Reihenfolge bestellt. | Elemente werden nicht bestellt. |
Benötigt O (log N) Zeit für Vorgänge wie Einfügen, Löschen und Suchen, wodurch es langsamer als TreeSet wird. | Benötigt konstante Zeit für grundlegende Vorgänge wie Einfügen, Löschen und Suchen, wodurch es schneller als TreeSet ist. |
Erlaubt keine Nullobjekte. | Ermöglicht ein Nullobjekt. |
Verwendet die compareTo () -Methode, um zwei Objekte zu vergleichen. | Verwendet die Methoden compare () und equals (), um zwei Objekte zu vergleichen. |
Intern implementiert mit Navigable TreeMap. | Intern mit HashMap implementiert. |
Verfügt über eine API mit umfangreichen Funktionen, die verschiedene Manipulationen ausführen kann. | Die Funktions-API von HashSet ist eher eingeschränkt. |
Häufig gestellte Fragen
F # 1) Was ist ein TreeSet?
Antworten: TreeSet ist eine Implementierung von SortedSet, die keine doppelten Werte zulässt. Die Elemente im TreeSet sind standardmäßig in aufsteigender Reihenfolge sortiert.
Q # 2) Wie fügt man TreeSet in Java Elemente hinzu?
Antworten: Die TreeSet-Klasse bietet eine Add-Methode, mit der dem TreeSet ein bestimmtes Element hinzugefügt wird. Es bietet auch die Methode 'addAll'. Diese Methode akzeptiert jede andere Sammlung als Argument und fügt dann alle Elemente dieser Sammlung zum TreeSet hinzu.
Q # 3) Ist TreeSet threadsicher?
Antworten: TreeSet ist nicht threadsicher. Daher sollten wir uns darum kümmern, wie wir TreeSet in einer Multithread-Umgebung betreiben.
Q # 4) Kann TreeSet Duplikate haben?
Antworten: Nein. TreeSet erlaubt keine Duplikate.
Q # 5)Erlaubt TreeSet in Java null?
Antworten: Ja. Wir können null Elemente in TreeSet haben.
Fazit
Damit ist unser Tutorial zu TreeSet abgeschlossen. TreeSet ist eine SortedSet-Implementierung, die keine Duplikate, aber Nullwerte zulässt. Die Elemente im TreeSet sind standardmäßig nach natürlicher Reihenfolge in aufsteigender Reihenfolge sortiert.
Wir haben die Grundlagen der TreeSet-Klasse zusammen mit ihrer Deklaration und verschiedenen Konstruktoren und Methoden gesehen.
In unseren nachfolgenden Tutorials werden die verbleibenden Java-Sammlungsklassen erläutert.
=> Sehen Sie sich hier die einfache Java-Schulungsreihe an.
Literatur-Empfehlungen
- Binärer Suchbaum in Java - Implementierungs- und Codebeispiele
- TreeMap in Java - Tutorial mit Java TreeMap-Beispielen
- Was ist Java Vector? Java Vector Class Tutorial mit Beispielen
- Java Scanner Class Tutorial mit Beispielen
- Java Array Class Tutorial - java.util.Arrays-Klasse mit Beispielen
- JAVA-Tutorial für Anfänger: Über 100 praktische Java-Video-Tutorials
- Java String enthält () Method Tutorial mit Beispielen
- Jagged Array In Java - Tutorial mit Beispielen