treeset java tutorial with programming examples
Denne opplæringen forklarer alt om TreeSet Class, Implementation, Iteration, TreeSet Vs HashSet, Java TreeSet Example, etc .:
TreeSet i Java implementerer Set-grensesnittet (nærmere bestemt SortedSet). TreeSet bruker et TreeMap internt for lagring av data. Som standard lagres objektene eller elementene i TreeSet i henhold til den naturlige rekkefølgen i stigende rekkefølge.
TreeSet-klassen som implementerer TreeSet i Java implementerer 'NavigableSet' -grensesnittet og arver også AbstractSet-klassen.
=> Sjekk her for å se AZ av Java-opplæringsveiledninger her.
Hva du vil lære:
TreeSet I Java
Merk at TreeSet-elementene også kan bestilles eksplisitt ved å tilby den tilpassede komparatoren når du oppretter et TreeSet-objekt ved hjelp av den spesifikke konstruktørprototypen.
Nedenfor er noen av de viktige egenskapene til TreeSet:
- TreeSet-klassen implementerer SortedSet-grensesnittet. Det tillater ikke dupliserte elementer.
- TreeSet-klassen er ikke synkronisert.
- TreeSet bevarer ikke innsettingsrekkefølgen, men elementene i TreeSet er sortert i henhold til den naturlige rekkefølgen.
- TreeSet kan bestilles ved å bruke en tilpasset komparator mens du lager et TreeSet-objekt.
- TreeSet brukes normalt til å lagre store mengder informasjon som er naturlig sortert. Dette hjelper enkel og raskere tilgang.
TreeSet Klassedeklarasjon
Java tilbyr en klasse kalt “TreeSet” som inneholder funksjonaliteten til TreeSet datastruktur. TreeSet-klassen er en del av java.util-pakken.
For å inkludere TreeSet-klassen i Java-programmet, bør vi bruke importuttalelsen som gitt nedenfor:
import java.util.TreeSet;
eller
import java.util.*;
En generell erklæring om TreeSet-klassen er:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
Som det fremgår av klassedeklarasjonen, utvider TreeSet-klassen AbstractSet og implementerer grensesnitt NavigableSet, Cloneable og Serializable.
Et klassehierarki for TreeSet-klassen er gitt nedenfor:
Intern implementering
Vi vet at TreeSet implementerer NavigableSet-grensesnittet og utvider SortedSet-klassen.
Internt er TreeSet-konstruktøren definert som følger:
public TreeSet() { this(new TreeMap()); }
Som vist i den ovennevnte konstruktordefinisjonen av TreeSet, påkalles et TreeMap-objekt. Internt er det altså et TreeMap-objekt som implementeres for et TreeSet. Når du legger til et element i TreeSet, blir det derfor lagt til en nøkkel i TreeMap der nøklene er sortert som standard.
Iht Oracle-dokumentasjon på TreeSet ,
'Et TreeSet er en NavigableSet-implementering basert på et TreeMap.'
Java TreeSet-eksempel
Følgende Java-program viser et enkelt eksempel som demonstrerer TreeSet. I dette programmet har vi definert et enkelt Color TreeSet. Vi legger til elementer i den og viser den deretter. Merk at elementene vises i henhold til den naturlige bestillingen.
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() + ' '); } } }
Produksjon:
TreeSet Innhold:
Blå Grønn Rød Gul
Iterer gjennom TreeSet
For å få tilgang til de enkelte elementene i TreeSet, må vi itere gjennom TreeSet eller med andre ord krysse gjennom TreeSet.
Vi gjør dette ved å erklære en Iterator for TreeSet og deretter bruke denne Iteratoren for å få tilgang til hvert element. For dette bruker vi neste () -metoden til en iterator som returnerer neste element i TreeSet.
Følgende Java-program demonstrerer bruken av Iterator til å itere gjennom 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(', '); } } }
Produksjon:
TreeSet: (5, 10, 15, 20, 25)
TreeSet ved hjelp av Iterator: 5, 10, 15, 20, 25,
topp 10 anime nettsteder engelsk dub
TreeSet Comparator i Java
Som standard er TreeSet naturlig bestilt. Vi kan også sortere TreeSet i en tilpasset rekkefølge ved å definere en ny komparatorklasse. I denne komparatorklassen må vi overstyre ‘sammenligne’-metoden for å sortere elementene i TreeSet. Dette komparatorobjektet blir deretter sendt til TreeSet-konstruktøren.
Følgende Java-program viser bruken av en Comparator for å 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; } } } }
Produksjon:
TreeSet: (Pune, Indore, Hyderabad, Bangaluru)
Ovennevnte program implementerer en Comparator-klasse for å sortere gitt TreeSet alfabetisk i omvendt rekkefølge.
Anbefalt lesing = >> Java Comparator Interface
TreeSet API / Methods & Constructors
I denne delen vil vi diskutere API-en til TreeSet-klassen. Her vil vi diskutere konstruktørene og metodene som tilbys av TreeSet-klassen.
TreeSet-klassen gir overbelastede konstruktører for å konstruere et TreeSet-objekt.
Vi har tabellert disse konstruktørene som følger:
Konstruktører
Konstruktørprototype | Beskrivelse | |
---|---|---|
inneholder | boolsk inneholder (Objekt o) | Sjekker om TreeSet inneholder gitt element; sant hvis det er til stede. |
TreeSet () | Standardkonstruktør for å opprette et nytt, tomt TreeSet-objekt. | |
TreeSet (samling c) | Oppretter et nytt TreeSet-objekt som inneholder elementene fra gitt samling c, sortert etter naturlig rekkefølge. | |
TreeSet (Sammenligningskomparator) | Konstruerer et nytt TreeSet-objekt som er tomt og vil bli sortert i henhold til spesifisert komparator. | |
TreeSet (SortedSet s) | Oppretter et nytt TreeSet-objekt som inneholder elementer fra gitt sortedSet s. |
Metoder
La oss deretter tabellisere de forskjellige metodene som tilbys av TreeSet-klassen.
Metode | Metode Prototype | Beskrivelse |
---|---|---|
Legg til | boolsk tilsetning (E e) | Legger til gitt element i TreeSet hvis det ikke allerede er der. |
Legg til alle | boolsk addAll (samling c) | Legger til alle elementene i den gitte samlingen c i settet. |
tak | E tak (E e) | Returnerer element som er større enn eller lik e (minste element); eller null hvis det ikke er noe element. |
klar | ugyldig klar () | Sletter alle elementene fra TreeSet. |
klone | Objektklon () | Returnerer en grunne kopi av TreeSet-objektet. |
komparator | Sammenligningskomparator () | Returnerer komparatoren for TreeSet eller null hvis naturlig bestilling brukes. |
synkendeIterator | Iterator synkendeIterator () | Returnerer synkende iterator over elementene i TreeSet. |
synkendeSett | NavigableSet descendingSet () | Returnerer en visning av elementene i TreeSet i omvendt rekkefølge. |
først | E først () | Returnerer første eller laveste element i TreeSet. |
gulv | E etasje (E e) | Returnerer elementet som er mindre enn eller lik det gitte elementet e i TreeSet. Returnerer null hvis ikke noe slikt element. |
headSet | SortedSet headset (E toElement) | returnerer et sett med elementer som er strengt mindre enn gitt til Element |
NavigableSet headSet (E toElement, inkludert boolsk) | Returnerer et sett med elementer som er lik (hvis inkludert = sant) eller mindre enn gitt til Element. | |
høyere | E høyere (E e) | Returnerer det minste elementet i dette settet som er strengt større enn det gitte elementet, eller null hvis det ikke er noe slikt element. |
er tom | boolsk isEmpty () | Sjekker om TreeSet er tomt. Returnerer sant hvis det er tomt. |
iterator | Iterator iterator () | Returnerer en iterator (i stigende rekkefølge) for TreeSet. |
siste | E siste () | Returnerer det høyeste eller siste elementet i TreeSet. |
Nedre | E lavere (E e) | Returnerer elementet (det største elementet) som er strengt mindre enn gitt element e i TreeSet. |
meningsmålingFørst | E pollFirst () | Fjerner og returnerer det første (laveste) elementet i settet; null hvis settet er tomt. |
pollSiste | E pollLast () | Fjerner og returnerer det siste (største) elementet i settet; null hvis den er tom. |
ta vekk | boolsk fjerning (Objekt o) | Fjern det gitte elementet fra settet. |
størrelse | int størrelse () | Returnerer størrelsen eller antallet elementer som finnes i TreeSet. |
delsett | NavigableSet subset (E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) | Returnerer en visning av elementer som spenner fra Element til Element. |
SortedSet subSet (E fromElement, E toElement) | Returnerer et visningselement som spenner fra Element (inkludert) til Element (eksklusivt). | |
halesett | SortedSet tailSet (E fromElement) | Returnerer en visning som inneholder elementer som er større enn eller lik den gitte fromElement. |
NavigableSet tailSet (E fromElement, inkludert boolsk) | Returnerer en visning av elementene er lik (hvis inkludering er sant) eller større enn fromElement. |
TreeSet I Java 8
Vær oppmerksom på at for TreeSet er det ingen store endringer i Java 8-versjonen. Alle metoder og konstruktører fungerer i Java 8 og senere versjoner.
TreeSet-implementering i Java
Følgende Java-program implementerer de fleste av TreeSet-metodene diskutert 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()); } }
Produksjon:
Innhold av tresett: 10 15 25 30 35
tak (25): 25
etasje (25): 25
TreeSet inneholder (15): true
Tresett størrelse: 5
TreeSet Første element: 10
TreeSet Siste element: 35
Element 30 fjernet fra TreeSet
TreeSet etter fjern (): 10 15 25 35
TreeSet størrelse etter fjernelse (): 4
Hodesett: (10, 15, 25)
Tresett størrelse etter klar (): 0
I det ovennevnte programmet definerer vi et TreeSet-objekt og legger deretter til elementer ved hjelp av 'add' -metoden. Deretter definerer vi en ArrayList. Deretter legger vi til elementer av ArrayList til TreeSet ved å bruke 'addAll' -metoden. Senere demonstrerer vi forskjellige TreeSet-metoder som Iterator, tak, gulv, første, siste, inneholder, størrelse, er Tom, etc.
TreeSet vs HashSet
La oss sjekke ut noen av forskjellene mellom TreeSet og HashSet.
TreeSet | HashSet |
---|---|
Elementer bestilles i henhold til naturlig bestilling. | Elementer bestilles ikke. |
Tar O (log N) tid for operasjoner som å sette inn, slette og søke og dermed gjøre det tregere enn TreeSet. | Tar konstant tid for grunnleggende operasjoner som å sette inn, slette og søke, noe som gjør det raskere enn TreeSet. |
Tillater ikke null objekter. | Tillater null objekt. |
Bruker comparTo () -metoden til å sammenligne to objekter. | Bruker metoden sammenligne () og lik () for å sammenligne to objekter. |
Internt implementert ved hjelp av Navigable TreeMap. | Internt implementert ved bruk av HashMap. |
Har rik funksjonalitets-API som kan utføre forskjellige manipulasjoner. | Funksjonalitets-API-et til HashSet er ganske begrenset. |
ofte stilte spørsmål
Q # 1) Hva er et TreeSet?
Svar: TreeSet er en implementering av SortedSet som ikke tillater dupliserte verdier. Elementene i TreeSet er som standard sortert i stigende rekkefølge.
Q # 2) Hvordan legger du til elementer i TreeSet i Java?
Svar: TreeSet-klassen gir en tilleggsmetode som brukes til å legge til et bestemt element i TreeSet. Det gir også 'addAll' -metoden. Denne metoden godtar enhver annen samling som et argument, og legger deretter til alle elementene i denne samlingen i TreeSet.
Q # 3) Er TreeSet trådsikker?
Svar: Nei. TreeSet er ikke trådsikkert. Dermed bør vi ta vare på hvordan vi driver TreeSet i et miljø med flere tråder.
Q # 4) Kan TreeSet ha duplikater?
Svar: Nei. TreeSet tillater ikke duplikater.
Q # 5)Tillater TreeSet null i Java?
Svar: Ja. Vi kan ha nullelementer i TreeSet.
Konklusjon
Dette fullfører opplæringen vår på TreeSet. TreeSet er en SortedSet-implementering som ikke tillater duplikater, men tillater nullverdier. Elementene i TreeSet er som standard sortert etter naturlig rekkefølge i stigende rekkefølge.
Vi har sett det grunnleggende i TreeSet-klassen sammen med erklæringen og forskjellige konstruktører og metoder.
I de påfølgende veiledningene diskuterer vi de gjenværende Java-samlingsklassene.
=> Se opp den enkle Java-treningsserien her.
Anbefalt lesing
- Binært søketre i Java - Implementering og kodeeksempler
- TreeMap In Java - Veiledning med Java TreeMap-eksempler
- Hva er Java Vector | Java Vector Class Tutorial med eksempler
- Java-skanner klasseveiledning med eksempler
- Java Array Class Tutorial - java.util.Arrays Class med eksempler
- JAVA-opplæring for nybegynnere: 100+ praktiske Java-videoveiledninger
- Java String inneholder () Metodeopplæring med eksempler
- Jagged Array In Java - Opplæring med eksempler