treeset java tutorial with programming examples
Acest tutorial explică totul despre TreeSet Class, Implementare, Iterare, TreeSet Vs HashSet, Java TreeSet Exemple, etc.:
TreeSet în Java implementează interfața Set (mai precis SortedSet). TreeSet folosește un TreeMap intern pentru stocarea datelor. În mod implicit, obiectele sau elementele din TreeSet sunt stocate conform ordinii naturale în ordine crescătoare.
Clasa TreeSet care implementează TreeSet în Java implementează interfața ‘NavigableSet’ și moștenește clasa AbstractSet.
=> Verificați aici pentru a vedea A-Z a tutorialelor de instruire Java aici.
Ce veți învăța:
TreeSet În Java
Rețineți că elementele TreeSet pot fi, de asemenea, comandate în mod explicit oferind comparatorul personalizat în momentul creării unui obiect TreeSet utilizând prototipul constructorului specific.
Mai jos sunt câteva dintre caracteristicile importante ale TreeSet:
- Clasa TreeSet implementează interfața SortedSet. Nu permite elemente duplicate.
- Clasa TreeSet nu este sincronizată.
- TreeSet nu păstrează ordinea de inserare, dar elementele din TreeSet sunt sortate conform ordinii naturale.
- TreeSet poate fi comandat utilizând un comparator personalizat în timp ce creați un obiect TreeSet.
- TreeSet este utilizat în mod normal pentru stocarea unor cantități uriașe de informații care sunt sortate în mod natural. Acest lucru ajută la un acces ușor și mai rapid.
Declarația clasei TreeSet
Java oferă o clasă numită „TreeSet” care conține funcționalitatea structurii de date TreeSet. Clasa TreeSet face parte din pachetul java.util.
Pentru a include clasa TreeSet în programul Java, ar trebui să folosim declarația de import așa cum este prezentată mai jos:
import java.util.TreeSet;
sau
import java.util.*;
O declarație generală a clasei TreeSet este:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
După cum se vede din declarația clasei, clasa TreeSet extinde AbstractSet și implementează interfețe NavigableSet, Cloneable și Serializable.
O ierarhie de clase pentru clasa TreeSet este dată mai jos:
Implementare internă
Știm că TreeSet implementează interfața NavigableSet și extinde clasa SortedSet.
Pe plan intern, constructorul TreeSet este definit după cum urmează:
public TreeSet() { this(new TreeMap()); }
După cum se vede în definiția de mai sus a constructorului TreeSet, este invocat un obiect TreeMap. Astfel intern, este un obiect TreeMap care este implementat pentru un TreeSet. Prin urmare, în timp ce adăugați un element în TreeSet, se adaugă o cheie în TreeMap în care cheile sunt sortate în mod implicit.
Conform Documentație Oracle pe TreeSet ,
„Un TreeSet este o implementare NavigableSet bazată pe un TreeMap.”
Exemplu Java TreeSet
Următorul program Java prezintă un exemplu simplu care demonstrează TreeSet. În acest program, am definit un set simplu de arbori de culoare. Adăugăm elemente la acesta și apoi îl afișăm. Rețineți că elementele sunt afișate conform ordonării naturale.
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() + ' '); } } }
Ieșire:
Conținut TreeSet:
Albastru Verde Roșu Galben
Iterează prin TreeSet
Pentru a accesa elementele individuale ale TreeSet, trebuie să iterăm prin TreeSet sau, cu alte cuvinte, să traversăm TreeSet.
Facem acest lucru declarând un Iterator pentru TreeSet și apoi folosim acest Iterator pentru a accesa fiecare element. Pentru aceasta, folosim metoda next () a unui iterator care returnează următorul element din TreeSet.
Următorul program Java demonstrează utilizarea Iteratorului pentru a itera prin 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(', '); } } }
Ieșire:
TreeSet: [5, 10, 15, 20, 25]
TreeSet folosind Iterator: 5, 10, 15, 20, 25,
Întrebări de interviu pentru domeniul asigurărilor analist de afaceri
TreeSet Comparator în Java
În mod implicit, TreeSet este ordonat în mod natural. De asemenea, putem sorta TreeSet într-o ordine personalizată definind o nouă clasă de comparare. În această clasă de comparare, trebuie să înlocuim metoda „compare” pentru a sorta elementele din TreeSet. Acest obiect comparator este apoi trecut la constructorul TreeSet.
Următorul program Java arată utilizarea unui comparator pentru a sorta 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; } } } }
Ieșire:
TreeSet: [Pune, Indore, Hyderabad, Bangaluru]
Programul de mai sus implementează o clasă Comparator pentru a sorta TreeSet-ul dat în ordine alfabetică în ordine inversă.
Lectură recomandată = >> Interfață Java Comparator
API TreeSet / Metode și constructori
În această secțiune, vom discuta API-ul clasei TreeSet. Aici vom discuta despre constructorii și metodele furnizate de clasa TreeSet.
Clasa TreeSet oferă constructori supraîncărcați pentru a construi un obiect TreeSet.
Am tabelat acești constructori după cum urmează:
Constructori
Prototipul constructorului | Descriere | |
---|---|---|
conține | boolean conține (Obiectul o) | Verifică dacă TreeSet conține un anumit element; adevărat dacă este prezent. |
TreeSet () | Constructor implicit pentru a crea un obiect TreeSet nou, gol. | |
TreeSet (Colecția c) | Creează un nou obiect TreeSet care conține elementele dintr-o colecție dată c, sortate conform ordonării naturale. | |
TreeSet ( Comparator comparator ) | Construiește un nou obiect TreeSet care este gol și va fi sortat conform unui comparator specificat. | |
TreeSet (SortedSet s) | Creează un nou obiect TreeSet care conține elemente din sortedSet-uri date. |
Metode
Apoi, să prezentăm tabelele diferitelor metode furnizate de clasa TreeSet.
Metodă | Metoda prototip | Descriere |
---|---|---|
adăuga | add boolean (E e) | Adaugă elementul dat în TreeSet dacă nu este deja acolo. |
adaugă totul | boolean addAll (Colecția c) | Adaugă la set toate elementele din colecția dată c. |
tavan | E plafon (E e) | Returnează elementul mai mare sau egal cu e (cel mai mic element); sau nul dacă nu este prezent niciun element. |
clar | gol clar () | Șterge toate elementele din TreeSet. |
clona | Clonare obiect () | Returnează o copie superficială a obiectului TreeSet. |
comparator | Comparator comparator ( ) | Returnează comparatorul pentru TreeSet sau nul dacă se utilizează o comandă naturală. |
descendentIterator | Iterator descendent Iterator () | Returnează iteratorul descendent peste elementele din TreeSet. |
descrescător | NavigableSet descendingSet () | Returnează o vedere a elementelor din TreeSet în ordine inversă. |
primul | E primul () | Returnează primul sau cel mai mic element din TreeSet. |
podea | Etaj E (E e) | Returnează elementul care este mai mic sau egal cu elementul dat e în TreeSet. Returnează nul dacă nu există un astfel de element. |
headSet | SortedSet headSet (E toElement) | returnează un set de elemente care sunt strict mai mici decât cele date laElement |
NavigableSet headSet (E toElement, inclusiv boolean) | Returnează un set de elemente care sunt egale cu (dacă inclusiv = adevărat) sau mai mici decât cele date la Element. | |
superior | E mai mare (E e) | Returnează cel mai mic element din acest set strict mai mare decât elementul dat sau nul dacă nu există un astfel de element. |
este gol | boolean isEmpty () | Verifică dacă TreeSet este gol. Returnează adevărat dacă este gol. |
iterator | Iterator iterator () | Returnează un iterator (în ordine crescătoare) pentru TreeSet. |
ultimul | E last () | Returnează cel mai înalt sau ultim element din TreeSet. |
inferior | E mai mic (E e) | Returnează elementul (cel mai mare element) care este strict mai mic decât elementul dat e în TreeSet. |
pollFirst | E pollFirst () | Elimină și returnează primul element (cel mai mic) din set; nul dacă setul este gol. |
pollLast | E pollLast () | Elimină și returnează ultimul (cel mai mare) element din set; nul dacă este setat gol. |
elimina | eliminare booleană (Obiectul o) | Elimină elementul dat din set. |
mărimea | int size () | Returnează dimensiunea sau numărul de elemente prezente în TreeSet. |
subset | Subsetul NavigableSet (E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) | Returnează o vizualizare a elementelor variind de la Element la Element. |
SubSet SortedSet (E fromElement, E toElement) | Returnează elemente de vizualizare care variază de la de la Element (inclusiv), până la Element (exclusiv). | |
tailSet | SortedSet tailSet (E fromElement) | Returnează o vizualizare care conține elemente care sunt mai mari sau egale cu cele date de la Element. |
NavigableSet tailSet (E fromElement, boolean inclusiv) | Returnează o vizualizare a elementelor care sunt egale cu (dacă inclusiv este adevărat) sau mai mare decât fromElement. |
TreeSet În Java 8
Vă rugăm să rețineți că pentru TreeSet, nu există modificări majore în versiunea Java 8. Toate metodele și constructorii funcționează în Java 8 și versiunile ulterioare.
Implementarea TreeSet în Java
Următorul program Java implementează majoritatea metodelor TreeSet discutate mai sus.
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()); } }
Ieșire:
Conținutul setului de arbori: 10 15 25 30 35
tavan (25): 25
etaj (25): 25
TreeSet conține (15): adevărat
Dimensiunea setului de copaci: 5
TreeSet Primul element: 10
TreeSet Ultimul element: 35
Elementul 30 a fost eliminat din TreeSet
TreeSet după eliminare (): 10 15 25 35
Dimensiunea TreeSet după eliminare (): 4
Setul cu cască: [10, 15, 25]
Dimensiunea setului de copaci după clear (): 0
În programul de mai sus, definim un obiect TreeSet și apoi îi adăugăm elemente folosind metoda „adăugați”. Apoi, definim o ArrayList. Apoi adăugăm elemente din ArrayList în TreeSet folosind metoda „addAll”. Mai târziu, demonstrăm diferite metode TreeSet, cum ar fi Iterator, tavan, podea, primul, ultimul, conține, dimensiunea, este gol, etc.
TreeSet Vs HashSet
Să verificăm câteva dintre diferențele dintre TreeSet și HashSet.
TreeSet | HashSet |
---|---|
Elementele sunt ordonate conform ordonării naturale. | Elementele nu sunt comandate. |
Durează O (jurnal N) pentru operațiuni precum inserare, ștergere și căutare, făcându-l astfel mai lent decât TreeSet. | Durează constant timp pentru operațiuni de bază cum ar fi inserarea, ștergerea și căutarea, făcându-l mai rapid decât TreeSet. |
Nu permite obiecte nule. | Permite obiectul nul. |
Folosește metoda compareTo () pentru a compara două obiecte. | Folosește metoda compare () și egal () pentru a compara două obiecte. |
Implementat intern folosind Navigable TreeMap. | Implementat intern folosind HashMap. |
Are o funcționalitate bogată API care poate efectua diverse manipulări. | Funcționalitatea API a HashSet este destul de limitată. |
întrebări frecvente
Q # 1) Ce este un TreeSet?
Răspuns: TreeSet este o implementare a SortedSet care nu permite duplicarea valorilor. Elementele din TreeSet sunt sortate implicit în ordine crescătoare.
Q # 2) Cum adăugați elemente în TreeSet în Java?
Răspuns: Clasa TreeSet oferă o metodă de adăugare care este utilizată pentru a adăuga un anumit element la TreeSet. De asemenea, oferă metoda „addAll”. Această metodă acceptă orice altă colecție ca argument și apoi adaugă toate elementele acestei colecții în TreeSet.
Q # 3) TreeSet este sigur pentru fire?
Răspuns: Nu. TreeSet nu este sigur pentru fire. Astfel, ar trebui să avem grijă de modul în care operăm TreeSet într-un mediu multi-thread.
Q # 4) TreeSet poate avea duplicate?
Răspuns: Nu. TreeSet nu permite duplicatele.
Q # 5)TreeSet permite nul în Java?
Răspuns: Da. Putem avea elemente nule în TreeSet.
Concluzie
Aceasta completează tutorialul nostru pe TreeSet. TreeSet este o implementare SortedSet care nu permite duplicate, dar permite valori nule. Elementele din TreeSet sunt sortate implicit în funcție de ordinea naturală în ordine crescătoare.
Am văzut elementele de bază ale clasei TreeSet împreună cu declarația acesteia și diferiți constructori și metode.
În tutorialele noastre ulterioare, discutăm clasele de colecție Java rămase.
=> Urmăriți aici seria de antrenament Java simplă.
Lectură recomandată
- Arborele de căutare binară în Java - Exemple de implementare și cod
- TreeMap în Java - Tutorial cu exemple de TreeMap Java
- Ce este Java Vector | Tutorial Java Vector Class cu exemple
- Tutorial de clasă Java Scanner cu exemple
- Tutorial Java Array Class - java.util.Arrays Class cu exemple
- Tutorial JAVA pentru începători: peste 100 de cursuri video Java practice
- Șirul Java conține () Tutorial metodă cu exemple
- Matrice Jagged în Java - Tutorial cu exemple