treeset java tutorial with programming examples
Denne vejledning forklarer alt om TreeSet-klasse, Implementering, Iteration, TreeSet Vs HashSet, Java TreeSet-eksempler osv .:
TreeSet i Java implementerer Set-grænsefladen (mere specifikt SortedSet). TreeSet bruger et TreeMap internt til lagring af data. Som standard gemmes objekterne eller elementerne i TreeSet i overensstemmelse med den naturlige rækkefølge i stigende rækkefølge.
TreeSet-klassen, der implementerer TreeSet i Java, implementerer 'NavigableSet' -grænsefladen og arver også AbstractSet-klassen.
=> Tjek her for at se AZ af Java-træningsvejledninger her.
Hvad du vil lære:
TreeSet I Java
Bemærk, at TreeSet-elementerne også kan bestilles eksplicit ved at levere den tilpassede Comparator på tidspunktet for oprettelse af et TreeSet-objekt ved hjælp af den specifikke konstruktorprototype.
Nedenfor er nogle af de vigtige egenskaber ved TreeSet:
- TreeSet-klassen implementerer SortedSet-grænsefladen. Det tillader ikke duplikatelementer.
- TreeSet-klassen er ikke synkroniseret.
- TreeSet bevarer ikke indsættelsesrækkefølgen, men elementerne i TreeSet sorteres efter den naturlige rækkefølge.
- TreeSet kan bestilles ved hjælp af en brugerdefineret komparator, mens du opretter et TreeSet-objekt.
- TreeSet bruges normalt til lagring af store mængder information, der er naturligt sorteret. Dette hjælper med nem og hurtigere adgang.
TreeSet-klassedeklaration
Java tilbyder en klasse kaldet 'TreeSet', der indeholder funktionaliteten af TreeSet-datastruktur. TreeSet-klassen er en del af java.util-pakken.
For at inkludere TreeSet-klassen i Java-programmet skal vi bruge importerklæringen som angivet nedenfor:
import java.util.TreeSet;
eller
import java.util.*;
En generel erklæring om TreeSet-klasse er:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
Som det ses fra klassedeklarationen, udvider TreeSet-klassen AbstractSet og implementerer NavigableSet-, Cloneable- og Serializable-grænseflader.
Et klassehierarki for TreeSet-klassen er angivet nedenfor:
Intern implementering
Vi ved, at TreeSet implementerer NavigableSet-grænsefladen og udvider klassen SortedSet.
Internt er TreeSet-konstruktøren defineret som følger:
public TreeSet() { this(new TreeMap()); }
Som det ses i ovennævnte konstruktordefinition af TreeSet, påberåbes et TreeMap-objekt. Internt er det således et TreeMap-objekt, der implementeres til et TreeSet. Derfor føjes en nøgle til TreeMap, mens nøglerne er sorteret som standard, mens der tilføjes et element til TreeSet.
Som pr Oracle-dokumentation på TreeSet ,
'Et TreeSet er en NavigableSet-implementering baseret på et TreeMap.'
Java TreeSet-eksempel
Følgende Java-program viser et simpelt eksempel, der demonstrerer TreeSet. I dette program har vi defineret et simpelt Color TreeSet. Vi tilføjer elementer til det og viser det derefter. Bemærk, at elementerne vises i henhold til den naturlige rækkefølge.
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() + ' '); } } }
Produktion:
TreeSet Indhold:
Blå Grøn Rød Gul
Iterer gennem TreeSet
For at få adgang til de enkelte elementer i TreeSet, er vi nødt til at gentage gennem TreeSet eller med andre ord krydse gennem TreeSet.
Vi gør dette ved at erklære en Iterator til TreeSet og derefter bruge denne Iterator til at få adgang til hvert element. Til dette bruger vi den næste () metode til en iterator, der returnerer det næste element i TreeSet.
Følgende Java-program demonstrerer brugen af Iterator til at gentage gennem 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(', '); } } }
Produktion:
TreeSet: [5, 10, 15, 20, 25]
TreeSet ved hjælp af Iterator: 5, 10, 15, 20, 25,
hvad er brugen af maven i selen
TreeSet Comparator i Java
Som standard er TreeSet naturligt ordnet. Vi kan også sortere TreeSet i en tilpasset rækkefølge ved at definere en ny komparatorklasse. I denne komparatorklasse er vi nødt til at tilsidesætte 'sammenligne'-metoden for at sortere elementerne i TreeSet. Dette komparatorobjekt sendes derefter til TreeSet-konstruktøren.
Følgende Java-program viser brugen af en komparator til at sortere 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; } } } }
Produktion:
TreeSet: [Pune, Indore, Hyderabad, Bangaluru]
Ovenstående program implementerer en Comparator-klasse for at sortere det givne TreeSet alfabetisk i omvendt rækkefølge.
Anbefalet læsning = >> Java Comparator Interface
TreeSet API / Metoder og konstruktører
I dette afsnit vil vi diskutere API'en i TreeSet-klassen. Her vil vi diskutere konstruktører og metoder leveret af TreeSet-klassen.
TreeSet-klassen giver overbelastede konstruktører til at konstruere et TreeSet-objekt.
Vi har tabuleret disse konstruktører som følger:
Konstruktører
Konstruktør prototype | Beskrivelse | |
---|---|---|
indeholder | boolean indeholder (Objekt o) | Kontrollerer, om TreeSet indeholder et givet element; sandt, hvis det er til stede. |
TreeSet () | Standardkonstruktør til at oprette et nyt, tomt TreeSet-objekt. | |
TreeSet (samling c) | Opretter et nyt TreeSet-objekt, der indeholder elementerne fra den givne samling c, sorteret efter naturlig rækkefølge. | |
TreeSet (Komparator komparator) | Konstruerer et nyt TreeSet-objekt, der er tomt og vil blive sorteret efter den specificerede komparator. | |
TreeSet (SortedSet s) | Opretter et nyt TreeSet-objekt, der indeholder elementer fra givne sortedSet s. |
Metoder
Lad os derefter tabulere de forskellige metoder, der leveres af klassen TreeSet.
Metode | Metode Prototype | Beskrivelse |
---|---|---|
tilføje | boolsk tilføjelse (E e) | Føjer det givne element til TreeSet, hvis det ikke allerede er der. |
tilføjAlle | boolsk addAll (samling c) | Føjer alle elementerne i den givne samling c til sættet. |
loft | E loft (E e) | Returnerer element større eller lig med e (mindste element); eller null, hvis der ikke er noget element. |
klar | ugyldigt klart () | Sletter alle elementerne fra TreeSet. |
klon | Objektklon () | Returnerer en lav kopi af TreeSet-objektet. |
komparator | Komparator komparator () | Returnerer komparatoren for TreeSet eller null, hvis der anvendes naturlig bestilling. |
faldendeIterator | Iterator faldendeIterator () | Returnerer faldende iterator over elementerne i TreeSet. |
faldende Sæt | NavigableSet descendingSet () | Returnerer en visning af elementer i TreeSet i omvendt rækkefølge. |
først | E først () | Returnerer det første eller laveste element i TreeSet. |
etage | E etage (E e) | Returnerer det element, der er mindre end eller lig med det givne element e i TreeSet. Returnerer null, hvis intet sådant element er. |
headSet | SortedSet headSet (E toElement) | returnerer et sæt elementer, der er strengt mindre end det givne til Element |
NavigableSet headSet (E toElement, inklusive boolsk) | Returnerer et sæt af elementer, der er lig med (hvis inklusive = sandt) eller mindre end givet til Element. | |
højere | E højere (E e) | Returnerer det mindste element i dette sæt strengt større end det givne element, eller null, hvis der ikke er et sådant element. |
er tom | boolsk isEmpty () | Kontrollerer, om TreeSet er tomt. Returnerer sandt, hvis det er tomt. |
iterator | Iterator iterator () | Returnerer en iterator (i stigende rækkefølge) for TreeSet. |
sidst | E sidste () | Returnerer det højeste eller sidste element i TreeSet. |
nederste | E lavere (E e) | Returnerer det element (største element), der er strengt mindre end det givne element e i TreeSet. |
afstemningFørst | E pollFirst () | Fjerner og returnerer det første (laveste) element i sættet; null, hvis sættet er tomt. |
pollLast | E pollLast () | Fjerner og returnerer det sidste (største) element i sættet; null, hvis den er tom. |
fjerne | boolsk fjernelse (Objekt o) | Fjerner det givne element fra sættet. |
størrelse | int størrelse () | Returnerer størrelsen eller antallet af elementer, der findes i TreeSet. |
undersæt | NavigableSet subset (E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) | Returnerer en visning af elementer, der spænder fra Element til Element. |
SortedSet subSet (E fromElement, E toElement) | Returnerer en visningselement, der spænder fra Element (inklusive) til Element (eksklusiv). | |
halesæt | SortedSet tailSet (E fromElement) | Returnerer en visning, der indeholder elementer, der er større end eller lig med det givne fra Element. |
NavigableSet tailSet (E fromElement, inklusive boolsk) | Returnerer en visning af elementerne er lig med (hvis inklusive er sandt) eller større end fromElement. |
TreeSet I Java 8
Bemærk, at der for TreeSet ikke er nogen større ændringer i Java 8-versionen. Alle metoder og konstruktører fungerer i Java 8 og de senere versioner.
TreeSet-implementering i Java
Følgende Java-program implementerer de fleste af TreeSet-metoderne beskrevet ovenfor.
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()); } }
Produktion:
Træsætets indhold: 10 15 25 30 35
loft (25): 25
etage (25): 25
TreeSet indeholder (15): true
Træ Sæt størrelse: 5
TreeSet Første element: 10
TreeSet Sidste element: 35
Element 30 fjernet fra TreeSet
TreeSet efter fjernelse (): 10 15 25 35
TreeSet-størrelse efter fjernelse (): 4
Headset: [10, 15, 25]
Træ Sæt størrelse efter clear (): 0
I ovenstående program definerer vi et TreeSet-objekt og tilføjer derefter elementer til det ved hjælp af 'tilføj' -metoden. Dernæst definerer vi en ArrayList. Derefter føjer vi elementer af ArrayList til TreeSet ved hjælp af 'addAll' -metoden. Senere demonstrerer vi forskellige TreeSet-metoder som Iterator, loft, gulv, første, sidste, indeholder, størrelse, er tom osv.
TreeSet vs HashSet
Lad os se på nogle af forskellene mellem TreeSet og HashSet.
TreeSet | HashSet |
---|---|
Elementer bestilles efter naturlig bestilling. | Elementer bestilles ikke. |
Det tager O (log N) tid til operationer som indsættelse, sletning og søgning, hvilket gør det langsommere end TreeSet. | Det tager konstant tid til grundlæggende operationer som indsættelse, sletning og søgning, hvilket gør det hurtigere end TreeSet. |
Tillader ikke null-objekter. | Tillader nul objekt. |
Bruger metoden CompareTo () til at sammenligne to objekter. | Bruger metode sammenligne () og lig () til at sammenligne to objekter. |
Internt implementeret ved hjælp af Navigable TreeMap. | Internt implementeret ved hjælp af HashMap. |
Har rig funktionalitet API, der kan udføre forskellige manipulationer. | Funktionalitets-API'et for HashSet er ret begrænset. |
Ofte stillede spørgsmål
Q # 1) Hvad er et TreeSet?
Svar: TreeSet er en implementering af SortedSet, der ikke tillader duplikerede værdier. Elementerne i TreeSet er som standard sorteret i stigende rækkefølge.
Q # 2) Hvordan tilføjer du elementer til TreeSet i Java?
Svar: TreeSet-klassen indeholder en tilføjelsesmetode, der bruges til at føje et specifikt element til TreeSet. Det giver også 'addAll'-metoden. Denne metode accepterer enhver anden samling som et argument og tilføjer derefter alle elementerne i denne samling til TreeSet.
Q # 3) Er TreeSet trådsikker?
Svar: Nej. TreeSet er ikke trådsikkert. Således skal vi tage os af, hvordan vi bruger TreeSet i et miljø med flere tråde.
Q # 4) Kan TreeSet have dubletter?
Svar: Nej. TreeSet tillader ikke duplikater.
Q # 5)Tillader TreeSet null i Java?
Svar: Ja. Vi kan have null-elementer i TreeSet.
Konklusion
Dette fuldender vores vejledning om TreeSet. TreeSet er en SortedSet-implementering, der ikke tillader duplikater, men tillader nulværdier. Elementerne i TreeSet er som standard sorteret efter naturlig rækkefølge i stigende rækkefølge.
Vi har set det grundlæggende i TreeSet-klassen sammen med dens erklæring og forskellige konstruktører og metoder.
I vores efterfølgende tutorials diskuterer vi de resterende Java-samlingsklasser.
=> Hold øje med den enkle Java-træningsserie her.
Anbefalet læsning
- Binært søgetræ i Java - Implementering og kodeeksempler
- TreeMap I Java - Vejledning med Java TreeMap-eksempler
- Hvad er Java Vector | Java Vector Class Tutorial med eksempler
- Java Scanner-klassevejledning med eksempler
- Java Array Class Tutorial - java.util.Arrays Class med eksempler
- JAVA-vejledning til begyndere: 100+ praktiske Java-videovejledninger
- Java String indeholder () Metodevejledning med eksempler
- Jagged Array In Java - Vejledning med eksempler