treeset java tutorial with programming examples
Questo tutorial spiega tutto su classe TreeSet, implementazione, iterazione, TreeSet vs HashSet, esempi di Java TreeSet, ecc .:
TreeSet in Java implementa l'interfaccia Set (più specificamente SortedSet). TreeSet utilizza internamente una TreeMap per la memorizzazione dei dati. Per impostazione predefinita, gli oggetti o gli elementi del TreeSet vengono memorizzati in base all'ordine naturale in ordine crescente.
La classe TreeSet che implementa TreeSet in Java implementa l'interfaccia 'NavigableSet' ed eredita anche la classe AbstractSet.
=> Controlla qui per vedere qui i tutorial di formazione su Java dalla A alla Z.
Cosa imparerai:
TreeSet in Java
Si noti che gli elementi TreeSet possono anche essere ordinati esplicitamente fornendo il Comparatore personalizzato al momento della creazione di un oggetto TreeSet utilizzando il prototipo del costruttore specifico.
Di seguito sono riportate alcune delle caratteristiche importanti di TreeSet:
- La classe TreeSet implementa l'interfaccia SortedSet. Non consente la duplicazione di elementi.
- La classe TreeSet non è sincronizzata.
- TreeSet non conserva l'ordine di inserimento ma gli elementi in TreeSet vengono ordinati secondo l'ordine naturale.
- TreeSet può essere ordinato utilizzando un comparatore personalizzato durante la creazione di un oggetto TreeSet.
- TreeSet viene normalmente utilizzato per memorizzare enormi quantità di informazioni ordinate in modo naturale. Ciò aiuta un accesso facile e veloce.
Dichiarazione di classe TreeSet
Java fornisce una classe chiamata 'TreeSet' che contiene la funzionalità della struttura dati TreeSet. La classe TreeSet fa parte del pacchetto java.util.
Per includere la classe TreeSet nel programma Java, dovremmo utilizzare l'istruzione import come indicato di seguito:
import java.util.TreeSet;
o
import java.util.*;
Una dichiarazione generale della classe TreeSet è:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
Come si vede dalla dichiarazione della classe, la classe TreeSet estende AbstractSet e implementa le interfacce NavigableSet, Cloneable e Serializable.
Di seguito viene fornita una gerarchia di classi per la classe TreeSet:
Implementazione interna
Sappiamo che TreeSet implementa l'interfaccia NavigableSet ed estende la classe SortedSet.
Internamente, il costruttore TreeSet è definito come segue:
public TreeSet() { this(new TreeMap()); }
Come visto nella precedente definizione del costruttore di TreeSet, viene richiamato un oggetto TreeMap. Pertanto internamente, è un oggetto TreeMap implementato per un TreeSet. Quindi, mentre si aggiunge un elemento a TreeSet, viene aggiunta una chiave a TreeMap in cui le chiavi vengono ordinate per impostazione predefinita.
Come da Documentazione Oracle su TreeSet ,
'Un TreeSet è un'implementazione di NavigableSet basata su una TreeMap.'
Esempio di Java TreeSet
Il seguente programma Java mostra un semplice esempio che mostra TreeSet. In questo programma, abbiamo definito un semplice Color TreeSet. Aggiungiamo elementi ad esso e poi lo visualizziamo. Notare che gli elementi vengono visualizzati secondo l'ordine 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() + ' '); } } }
Produzione:
Contenuto TreeSet:
Blu Verde Rosso Giallo
Iterate attraverso TreeSet
Per accedere ai singoli elementi di TreeSet, dobbiamo iterare attraverso il TreeSet o, in altre parole, attraversare il TreeSet.
Lo facciamo dichiarando un Iteratore per il TreeSet e quindi usiamo questo Iteratore per accedere a ogni elemento. Per questo, usiamo il metodo next () di un iteratore che restituisce l'elemento successivo nel TreeSet.
Il seguente programma Java dimostra l'uso di Iterator per iterare attraverso 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(', '); } } }
Produzione:
TreeSet: (5, 10, 15, 20, 25)
TreeSet utilizzando Iterator: 5, 10, 15, 20, 25,
domande dell'help desk da porre agli utenti
Comparatore di TreeSet in Java
Per impostazione predefinita, il TreeSet è ordinato in modo naturale. Possiamo anche ordinare TreeSet in un ordine personalizzato definendo una nuova classe di confronto. In questa classe di confronto, dobbiamo sovrascrivere il metodo 'compare' per ordinare gli elementi del TreeSet. Questo oggetto comparatore viene quindi passato al costruttore TreeSet.
Il seguente programma Java mostra l'uso di un comparatore per ordinare il 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; } } } }
Produzione:
TreeSet: (Pune, Indore, Hyderabad, Bangaluru)
Il programma precedente implementa una classe Comparator per ordinare alfabeticamente il TreeSet dato in ordine inverso.
Lettura consigliata = >> Interfaccia comparatore Java
API TreeSet / metodi e costruttori
In questa sezione, discuteremo l'API della classe TreeSet. Qui discuteremo i costruttori e i metodi forniti dalla classe TreeSet.
La classe TreeSet fornisce costruttori sovraccaricati per costruire un oggetto TreeSet.
Abbiamo tabularizzato questi costruttori come segue:
Costruttori
Prototipo del costruttore | Descrizione | |
---|---|---|
contiene | booleano contiene (Oggetto o) | Controlla se TreeSet contiene un dato elemento; vero se presente. |
TreeSet () | Costruttore predefinito per creare un nuovo oggetto TreeSet vuoto. | |
TreeSet (Collezione c) | Crea un nuovo oggetto TreeSet contenente gli elementi della raccolta data c, ordinati secondo l'ordine naturale. | |
TreeSet (Comparatore comparatore) | Costruisce un nuovo oggetto TreeSet che è vuoto e verrà ordinato in base al comparatore specificato. | |
TreeSet (SortedSet s) | Crea un nuovo oggetto TreeSet che contiene elementi da un determinato SortSet. |
Metodi
Successivamente, tabularizziamo i vari metodi forniti dalla classe TreeSet.
Metodo | Metodo Prototipo | Descrizione |
---|---|---|
Inserisci | booleano add (E e) | Aggiunge un dato elemento al TreeSet se non è già presente. |
Aggiungi tutto | booleano addAll (Collezione c) | Aggiunge tutti gli elementi nella raccolta data c all'insieme. |
soffitto | E soffitto (E e) | Restituisce un elemento maggiore o uguale a e (elemento minimo); o null se non è presente alcun elemento. |
chiaro | void clear () | Elimina tutti gli elementi dal TreeSet. |
clone | Oggetto clone () | Restituisce una copia superficiale dell'oggetto TreeSet. |
comparatore | Comparatore comparatore () | Restituisce il comparatore per TreeSet o null se viene utilizzato l'ordinamento naturale. |
descendingIterator | Iteratore discendente Iteratore () | Restituisce l'iteratore discendente sugli elementi nel TreeSet. |
descendingSet | NavigableSet descendingSet () | Restituisce una visualizzazione degli elementi nel TreeSet in ordine inverso. |
primo | Mi prima () | Restituisce il primo o il più basso elemento nel TreeSet. |
pavimento | E piano (E e) | Restituisce l'elemento che è minore o uguale all'elemento specificato e nel TreeSet. Restituisce null in assenza di tale elemento. |
headSet | SortedSet headSet (E toElement) | restituisce un insieme di elementi che sono strettamente inferiori al dato toElement |
NavigableSet headSet (E toElement, booleano incluso) | Restituisce un insieme di elementi che sono uguali a (se inclusive = true) o minori di quelli forniti aElement. | |
più alto | E higher ( E e ) | Restituisce l'elemento minimo in questo insieme strettamente maggiore dell'elemento specificato o null se non esiste tale elemento. |
è vuoto | booleano isEmpty () | Controlla se il TreeSet è vuoto. Restituisce vero se vuoto. |
iteratore | Iteratore iteratore () | Restituisce un iteratore (in ordine crescente) per TreeSet. |
scorso | E ultimo () | Restituisce l'elemento più alto o l'ultimo nel TreeSet. |
inferiore | E lower ( E e ) | Restituisce l'elemento (elemento più grande) che è rigorosamente inferiore a un dato elemento e nel TreeSet. |
pollFirst | E pollFirst () | Rimuove e restituisce il primo elemento (il più basso) dell'insieme; null se il set è vuoto. |
pollLast | E pollLast ( ) | Rimuove e restituisce l'ultimo (il più grande) elemento dell'insieme; null se impostato vuoto. |
rimuovere | booleano remove (Object o) | Rimuove l'elemento specificato dal set. |
taglia | int size () | Restituisce la dimensione o il numero di elementi presenti nel TreeSet. |
subSet | NavigableSet subset (E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) | Restituisce una visualizzazione di elementi che vanno da fromElement a toElement. |
SortedSet subSet (E fromElement, E toElement) | Restituisce una vista elementi che vanno da fromElement (inclusivo) a toElement (esclusivo). | |
tailSet | SortedSet tailSet (E fromElement) | Restituisce una vista contenente elementi che sono maggiori o uguali a fromElement specificato. |
NavigableSet tailSet (E fromElement, booleano incluso) | Restituisce una visualizzazione degli elementi uguali a (se inclusive è true) o maggiori di fromElement. |
TreeSet in Java 8
Si noti che per TreeSet, non ci sono modifiche importanti nella versione Java 8. Tutti i metodi e i costruttori funzionano in Java 8 e nelle versioni successive.
Implementazione di TreeSet in Java
Il seguente programma Java implementa la maggior parte dei metodi TreeSet discussi sopra.
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()); } }
Produzione:
Contenuto del set albero: 10 15 25 30 35
soffitto (25): 25
piano (25): 25
TreeSet contiene (15): true
Dimensioni albero set: 5
Primo elemento TreeSet: 10
TreeSet Ultimo elemento: 35
Elemento 30 rimosso da TreeSet
TreeSet dopo la rimozione (): 10 15 25 35
Dimensione TreeSet dopo remove (): 4
Auricolare: (10, 15, 25)
Dimensioni del gruppo albero dopo la cancellazione (): 0
Nel programma precedente, definiamo un oggetto TreeSet e quindi aggiungiamo elementi ad esso utilizzando il metodo 'add'. Successivamente, definiamo un ArrayList. Quindi aggiungiamo elementi di ArrayList a TreeSet utilizzando il metodo 'addAll'. Successivamente, dimostreremo vari metodi TreeSet come Iterator, soffitto, pavimento, primo, ultimo, contiene, dimensione, èEmpty, ecc.
TreeSet Vs HashSet
Esaminiamo alcune delle differenze tra TreeSet e HashSet.
TreeSet | HashSet |
---|---|
Gli elementi sono ordinati secondo l'ordine naturale. | Gli elementi non sono ordinati. |
Richiede O (log N) tempo per operazioni come inserimento, cancellazione e ricerca, rendendolo così più lento di TreeSet. | Richiede tempo costante per operazioni di base come inserimento, eliminazione e ricerca, rendendolo più veloce di TreeSet. |
Non consente oggetti nulli. | Consente oggetto nullo. |
Utilizza il metodo compareTo () per confrontare due oggetti. | Utilizza il metodo compare () ed equals () per confrontare due oggetti. |
Implementato internamente utilizzando Navigable TreeMap. | Implementato internamente utilizzando HashMap. |
Ha un'API ricca di funzionalità in grado di eseguire varie manipolazioni. | La funzionalità API di HashSet è piuttosto limitata. |
Domande frequenti
D # 1) Cos'è un TreeSet?
Risposta: TreeSet è un'implementazione di SortedSet che non consente valori duplicati. Gli elementi nel TreeSet sono ordinati per impostazione predefinita in ordine crescente.
Q # 2) Come si aggiungono elementi a TreeSet in Java?
Risposta: La classe TreeSet fornisce un metodo di aggiunta utilizzato per aggiungere un elemento specifico al TreeSet. Fornisce inoltre il metodo 'addAll'. Questo metodo accetta qualsiasi altra raccolta come argomento e quindi aggiunge tutti gli elementi di questa raccolta al TreeSet.
Q # 3) TreeSet è thread-safe?
Risposta: No. TreeSet non è thread-safe. Quindi dovremmo occuparci di come operiamo TreeSet in un ambiente multi-thread.
Q # 4) TreeSet può avere duplicati?
Risposta: No. TreeSet non consente i duplicati.
Q # 5)TreeSet consente null in Java?
Risposta: Sì. Possiamo avere elementi nulli in TreeSet.
Conclusione
Questo completa il nostro tutorial su TreeSet. TreeSet è un'implementazione SortedSet che non consente duplicati ma consente valori null. Gli elementi nel TreeSet sono ordinati per impostazione predefinita in base all'ordine naturale in ordine crescente.
Abbiamo visto le basi della classe TreeSet insieme alla sua dichiarazione e a vari costruttori e metodi.
Nelle nostre esercitazioni successive, discuteremo le restanti classi di raccolte Java.
=> Guarda qui la serie di formazione su Java semplice.
Lettura consigliata
- Albero di ricerca binario in Java - Implementazione ed esempi di codice
- TreeMap in Java - Tutorial con esempi di Java TreeMap
- Cos'è Java Vector | Tutorial Java Vector Class con esempi
- Tutorial di classe per scanner Java con esempi
- Tutorial Java Array Class - classe java.util.Arrays con esempi
- Tutorial JAVA per principianti: oltre 100 tutorial video Java pratici
- Tutorial sul metodo Java String contains () con esempi
- Jagged Array in Java - Tutorial con esempi