treeset java tutorial with programming examples
Ta vadnica pojasnjuje vse o razredu TreeSet, implementaciji, iteraciji, TreeSet Vs HashSet, Java TreeSet Primeri itd.:
TreeSet v Javi izvaja vmesnik Set (natančneje SortedSet). TreeSet interno uporablja TreeMap za shranjevanje podatkov. Predmeti ali elementi TreeSet-a so privzeto shranjeni po naravnem vrstnem redu v naraščajočem vrstnem redu.
Razred TreeSet, ki implementira TreeSet v Javi, implementira vmesnik ‘NavigableSet’ in podeduje tudi razred AbstractSet.
=> Tukaj si oglejte A-Z vadnic za učenje Java.
Kaj se boste naučili:
TreeSet v Javi
Upoštevajte, da lahko elemente TreeSet tudi izrecno naročite tako, da zagotovite prilagojeni primerjalnik v času ustvarjanja predmeta TreeSet z uporabo določenega prototipa konstruktorja.
Spodaj je nekaj pomembnih značilnosti TreeSet:
- Razred TreeSet izvaja vmesnik SortedSet. Ne dovoljuje podvojenih elementov.
- Razred TreeSet ni sinhroniziran.
- TreeSet ne ohrani vrstnega reda vstavljanja, vendar so elementi v TreeSetu razvrščeni po naravnem vrstnem redu.
- TreeSet lahko naročite z uporabo primerjalnika po meri med ustvarjanjem predmeta TreeSet.
- TreeSet se običajno uporablja za shranjevanje ogromnih količin informacij, ki so naravno razvrščene. To pomaga pri enostavnem in hitrejšem dostopu.
Izjava o razredu TreeSet
Java ponuja razred imenovan 'TreeSet', ki vsebuje funkcionalnost podatkovne strukture TreeSet. Razred TreeSet je del paketa java.util.
Za vključitev razreda TreeSet v program Java bi morali uporabiti izjavo o uvozu, kot je navedeno spodaj:
import java.util.TreeSet;
ali
import java.util.*;
Splošna izjava razreda TreeSet je:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
Kot je razvidno iz izjave o razredu, razred TreeSet razširja AbstractSet in izvaja vmesnike NavigableSet, Cloneable in Serializable.
Hierarhija razredov za razred TreeSet je podana spodaj:
Notranje izvajanje
Vemo, da TreeSet izvaja vmesnik NavigableSet in razširja razred SortedSet.
Konstruktor TreeSet je interno definiran na naslednji način:
public TreeSet() { this(new TreeMap()); }
Kot je razvidno iz zgornje definicije konstruktorja TreeSet, se prikliče objekt TreeMap. Tako je interno objekt TreeMap, ki je implementiran za TreeSet. Med dodajanjem elementa v TreeSet se torej TreeMap doda ključ, v katerem so ključi privzeto razvrščeni.
Glede na Oraclova dokumentacija o TreeSetu ,
'TreeSet je izvedba NavigableSet, ki temelji na TreeMap.'
Primer Java TreeSet
Naslednji program Java prikazuje preprost primer, ki prikazuje TreeSet. V tem programu smo opredelili preprost Color TreeSet. Dodamo mu elemente in ga nato prikažemo. Upoštevajte, da so elementi prikazani po naravnem vrstnem redu.
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() + ' '); } } }
Izhod:
Vsebina TreeSet:
Modra Zelena Rdeča Rumena
Ponavljajte skozi TreeSet
Za dostop do posameznih elementov TreeSet moramo itirirati skozi TreeSet ali z drugimi besedami, prečkati TreeSet.
To naredimo tako, da za TreeSet razglasimo Iterator in nato uporabimo Iterator za dostop do vsakega elementa. Za to uporabimo naslednjo () metodo iteratorja, ki vrne naslednji element v TreeSet.
Naslednji program Java prikazuje uporabo Iteratorja za iteracijo skozi 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(', '); } } }
Izhod:
TreeSet: (5, 10, 15, 20, 25)
TreeSet z uporabo Iteratorja: 5, 10, 15, 20, 25,
vodenje vprašanj in odgovorov za intervju
Primerjalnik TreeSet v Javi
Privzeto je TreeSet naravno urejen. TreeSet lahko razvrstimo tudi v prilagojenem vrstnem redu z definiranjem novega primerjalnega razreda. V tem primerjalnem razredu moramo za razvrščanje elementov TreeSet-a preglasiti metodo 'compare'. Ta primerjalni objekt se nato posreduje konstruktorju TreeSet.
Naslednji program Java prikazuje uporabo primerjalnika za razvrščanje 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; } } } }
Izhod:
TreeSet: (Pune, Indore, Hyderabad, Bangaluru)
Zgornji program izvaja razred Comparator za razvrščanje danega TreeSet po abecedi v obratnem vrstnem redu.
Priporočeno branje = >> Primerjalni vmesnik Java
API / metode in konstruktorji TreeSet
V tem poglavju bomo razpravljali o API-ju razreda TreeSet. Tu bomo razpravljali o konstruktorjih in metodah, ki jih ponuja razred TreeSet.
Razred TreeSet ponuja preobremenjene konstruktorje za izdelavo objekta TreeSet.
Te konstruktorje smo razdelili na naslednji način:
Konstruktorji
Prototip konstruktorja | Opis | |
---|---|---|
vsebuje | logična vrednost vsebuje (predmet o) | Preveri, ali TreeSet vsebuje dani element; res, če je prisoten. |
TreeSet () | Privzeti konstruktor za ustvarjanje novega, praznega predmeta TreeSet. | |
TreeSet (Zbirka c) | Ustvari nov objekt TreeSet, ki vsebuje elemente iz dane zbirke c, razvrščene po naravnem vrstnem redu. | |
TreeSet (Primerjalna primerjalna naprava) | Konstruira nov objekt TreeSet, ki je prazen in bo razvrščen po določenem primerjalniku. | |
TreeSet (SortedSet s) | Ustvari nov objekt TreeSet, ki vsebuje elemente iz danih sortedSet s. |
Metode
Nato si oglejmo tabelarno različne metode, ki jih ponuja razred TreeSet.
Metoda | Prototip metode | Opis |
---|---|---|
dodaj | logični dodatek (E e) | Dodan element doda TreeSet, če ga še ni. |
addAll | boolean addAll (zbirka c) | V nabor doda vse elemente v dani zbirki c. |
strop | E zgornja meja (E e) | Vrne element, večji ali enak e (najmanjši element); ali nič, če element ni prisoten. |
jasno | prazno jasno () | Izbriše vse elemente iz TreeSet. |
klon | Klon predmeta () | Vrne plitvo kopijo predmeta TreeSet. |
primerjalnik | Primerjalna primerjalna naprava () | Vrne primerjalnik za TreeSet ali null, če je uporabljeno naravno urejanje. |
padajočiIterator | Iterator padajočeIterator () | Vrne padajoči iterator nad elementi v TreeSet. |
padajočeNastavi | NavigableSet descendingSet () | Vrne pogled elementov v TreeSet v obratnem vrstnem redu. |
najprej | E najprej () | Vrne prvi ali najnižji element v TreeSet. |
nadstropje | E nadstropje (E e) | Vrne element, ki je manjši ali enak danemu elementu e v TreeSet. Vrne nič, če takega elementa ni. |
headSet | SortedSet headSet (E toElement) | vrne nabor elementov, ki so strogo manjši od danega toElement |
NavigableSet headSet (E toElement, vključno z logično vrednostjo) | Vrne nabor elementov, ki so enaki (če je vključeno = true) ali manj, kot je dano toElement. | |
višje | E višje (E e) | Vrne najmanjši element v tem naboru strogo večji od danega elementa ali nič, če takega elementa ni. |
je prazno | logična isEmpty () | Preveri, ali je TreeSet prazen. Vrne true, če je prazno. |
iterator | Iterator iteratorja () | Vrne iterator (v naraščajočem vrstnem redu) za TreeSet. |
zadnji | E zadnji () | Vrne najvišji ali zadnji element v TreeSet. |
nižje | E nižje (E e) | Vrne element (največji element), ki je strogo manjši od podanega elementa e v TreeSet. |
anketaPrvi | E anketaPrvi () | Odstrani in vrne prvi (najnižji) element v nizu; nič, če je nabor prazen. |
anketaLast | E-anketaZadnja () | Odstrani in vrne zadnji (največji) element v nizu; nič, če je nastavljeno prazno. |
Odstrani | logično odstranjevanje (objekt o) | Odstrani dani element iz niza. |
velikost | velikost int () | Vrne velikost ali število elementov, ki so prisotni v TreeSet. |
podnabor | Podnabor NavigableSet (E fromElement, logična vrednost odInclusive, E toElement, logična vrednost doInclusive) | Vrne pogled elementov od od Elementa do Elementa. |
SortedSet subSet (E fromElement, E toElement) | Vrne elemente pogleda, ki segajo od Elementa (vključno) do Elementa Elementa (izključno). | |
tailSet | SortedSet tailSet (E fromElement) | Vrne pogled, ki vsebuje elemente, ki so večji ali enaki dani odElement. |
NavigableSet tailSet (E fromElement, vključno z logično vrednostjo) | Vrne pogled elementov, ki so enaki (če je vključeno true) ali več kot odElement. |
TreeSet v Javi 8
Upoštevajte, da za TreeSet v različici Java 8 ni večjih sprememb. Vse metode in konstruktorji delujejo v Javi 8 in novejših različicah.
Implementacija TreeSet v Javi
Naslednji program Java izvaja večino zgoraj obravnavanih metod TreeSet.
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()); } }
Izhod:
Vsebina nabora dreves: 10 15 25 30 35
strop (25): 25
nadstropje (25): 25
TreeSet vsebuje (15): true
Velikost drevesnega kompleta: 5
TreeSet Prvi element: 10
TreeSet Zadnji element: 35
Element 30 je odstranjen iz nabora TreeSet
TreeSet po odstranitvi (): 10 15 25 35
Velikost TreeSet po odstranitvi (): 4
Slušalke: (10, 15, 25)
Velikost drevesa po izbrisu (): 0
V zgornjem programu definiramo objekt TreeSet in mu nato dodamo elemente po metodi ‘add’. Nato določimo ArrayList. Nato elemente ArrayList dodamo TreeSetu z uporabo metode ‘addAll’. Kasneje predstavimo različne metode TreeSet, kot so Iterator, strop, tla, prvi, zadnji, vsebuje, velikost, isEmpty itd.
TreeSet Vs HashSet
Oglejmo si nekaj razlik med TreeSet in HashSet.
TreeSet | HashSet |
---|---|
Elementi so razvrščeni po naravnem naročilu. | Elementi niso naročeni. |
Za operacije, kot so vstavljanje, brisanje in iskanje, je potreben čas O (log N), s čimer je počasneje kot TreeSet. | Potrebuje nenehen čas za osnovne operacije, kot so vstavljanje, brisanje in iskanje, zaradi česar je hitrejše kot TreeSet. |
Ne dovoli ničelnih predmetov. | Omogoča ničelni objekt. |
Za primerjavo dveh predmetov uporablja metodo compareTo (). | Za primerjavo dveh predmetov uporablja metodo compare () in equals (). |
Interno implementiran s pomočjo Navigable TreeMap. | Interno implementirano s pomočjo HashMap. |
Ima bogat funkcionalni API, ki lahko izvaja različne manipulacije. | Funkcionalni API HashSet je precej omejen. |
Pogosto zastavljena vprašanja
V # 1) Kaj je TreeSet?
Odgovor: TreeSet je izvedba SortedSet, ki ne dovoljuje podvojenih vrednosti. Elementi v TreeSet so privzeto razvrščeni v naraščajočem vrstnem redu.
Q # 2) Kako v Javi dodam elemente TreeSetu?
Odgovor: Razred TreeSet ponuja metodo dodajanja, ki se uporablja za dodajanje določenega elementa v TreeSet. Zagotavlja tudi metodo 'addAll'. Ta metoda kot argument sprejme katero koli drugo zbirko in nato doda vse elemente te zbirke v TreeSet.
Q # 3) Je TreeSet varno pred nitmi?
Odgovor: Ne. TreeSet ni varen za nit. Tako bi morali poskrbeti za to, kako upravljamo TreeSet v okolju z več nitmi.
Q # 4) Ali lahko TreeSet vsebuje dvojnike?
Odgovor: Ne. TreeSet ne dovoljuje dvojnikov.
V # 5)Ali TreeSet dovoljuje nulo v Javi?
Odgovor: Da. V TreeSetu imamo lahko ničelne elemente.
Zaključek
S tem smo zaključili našo vadnico o TreeSetu. TreeSet je izvedba SortedSet, ki ne dovoljuje dvojnikov, vendar omogoča ničelne vrednosti. Elementi v TreeSet so privzeto razvrščeni po naravnem vrstnem redu v naraščajočem vrstnem redu.
Videli smo osnove razreda TreeSet skupaj z njegovo deklaracijo in različnimi konstruktorji in metodami.
V naslednjih vajah bomo razpravljali o preostalih razredih zbiranja Java.
=> Tukaj si oglejte preproste vadbene serije Java.
Priporočeno branje
- Binarno drevo iskanja v Javi - primeri izvedbe in kode
- TreeMap v Javi - Vadnica z primeri Java TreeMap
- Kaj je Java Vector | Vadnica Java Vector Class s primeri
- Vadnica razreda Java Scanner Class z primeri
- Vadnica razreda Java Array - java.util.Arrays Class s primeri
- JAVA Vadnica za začetnike: 100+ praktičnih Javnih video vadnic
- Java String vsebuje () Vadnico metode s primeri
- Nazobčan niz v Javi - Vadnica s primeri