treeset java tutorial with programming examples
Ce didacticiel explique tout sur la classe TreeSet, l'implémentation, l'itération, TreeSet Vs HashSet, les exemples Java TreeSet, etc.:
TreeSet en Java implémente l'interface Set (plus spécifiquement SortedSet). Le TreeSet utilise un TreeMap en interne pour stocker les données. Par défaut, les objets ou éléments du TreeSet sont stockés selon l'ordre naturel dans l'ordre croissant.
La classe TreeSet qui implémente TreeSet en Java implémente l’interface ‘NavigableSet’ et hérite également de la classe AbstractSet.
=> Cliquez ici pour voir de A à Z des didacticiels de formation Java ici.
Ce que vous apprendrez:
TreeSet en Java
Notez que les éléments TreeSet peuvent également être explicitement ordonnés en fournissant le comparateur personnalisé au moment de la création d'un objet TreeSet à l'aide du prototype de constructeur spécifique.
Voici quelques-unes des caractéristiques importantes de TreeSet:
- La classe TreeSet implémente l'interface SortedSet. Il n'autorise pas les éléments en double.
- La classe TreeSet n'est pas synchronisée.
- TreeSet ne conserve pas l'ordre d'insertion mais les éléments de TreeSet sont triés selon l'ordre naturel.
- TreeSet peut être ordonné à l'aide d'un comparateur personnalisé lors de la création d'un objet TreeSet.
- TreeSet est normalement utilisé pour stocker d'énormes quantités d'informations qui sont naturellement triées. Cela facilite et accélère l'accès.
Déclaration de classe TreeSet
Java fournit une classe appelée «TreeSet» qui contient les fonctionnalités de la structure de données TreeSet. La classe TreeSet fait partie du package java.util.
Pour inclure la classe TreeSet dans le programme Java, nous devons utiliser l'instruction import comme indiqué ci-dessous:
import java.util.TreeSet;
ou
import java.util.*;
Une déclaration générale de la classe TreeSet est:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
Comme le montre la déclaration de classe, la classe TreeSet étend AbstractSet et implémente les interfaces NavigableSet, Cloneable et Serializable.
Une hiérarchie de classes pour la classe TreeSet est donnée ci-dessous:
Mise en œuvre interne
Nous savons que TreeSet implémente l'interface NavigableSet et étend la classe SortedSet.
En interne, le constructeur TreeSet est défini comme suit:
public TreeSet() { this(new TreeMap()); }
Comme vu dans la définition du constructeur ci-dessus de TreeSet, un objet TreeMap est appelé. Ainsi en interne, c'est un objet TreeMap qui est implémenté pour un TreeSet. Par conséquent, lors de l'ajout d'un élément à TreeSet, une clé est ajoutée à TreeMap dans laquelle les clés sont triées par défaut.
Selon Documentation Oracle sur TreeSet ,
«Un TreeSet est une implémentation NavigableSet basée sur un TreeMap.»
Exemple Java TreeSet
Le programme Java suivant montre un exemple simple qui illustre TreeSet. Dans ce programme, nous avons défini un simple arbre de couleurs. Nous y ajoutons des éléments puis nous les affichons. Notez que les éléments sont affichés selon l'ordre naturel.
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() + ' '); } } }
Production:
Contenu de TreeSet:
Bleu Vert Rouge Jaune
Itérer à travers TreeSet
Pour accéder aux éléments individuels de TreeSet, nous devons parcourir le TreeSet ou en d'autres termes, traverser le TreeSet.
Pour ce faire, nous déclarons un Iterator pour le TreeSet, puis utilisons cet Iterator pour accéder à chaque élément. Pour cela, nous utilisons la méthode next () d'un itérateur qui renvoie l'élément suivant dans le TreeSet.
Le programme Java suivant illustre l'utilisation de l'itérateur pour parcourir 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(', '); } } }
Production:
TreeSet: (5, 10, 15, 20, 25)
TreeSet utilisant Iterator: 5, 10, 15, 20, 25,
comment ouvrir les fichiers jar
Comparateur TreeSet en Java
Par défaut, le TreeSet est naturellement ordonné. Nous pouvons également trier TreeSet dans un ordre personnalisé en définissant une nouvelle classe de comparateur. Dans cette classe de comparaison, nous devons remplacer la méthode «compare» pour trier les éléments du TreeSet. Cet objet comparateur est ensuite passé au constructeur TreeSet.
Le programme Java suivant montre l'utilisation d'un comparateur pour trier le 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; } } } }
Production:
TreeSet: (Pune, Indore, Hyderabad, Bangaluru)
Le programme ci-dessus implémente une classe Comparator pour trier le TreeSet donné par ordre alphabétique dans l'ordre inverse.
Lecture recommandée = >> Interface de comparaison Java
API TreeSet / Méthodes et constructeurs
Dans cette section, nous discuterons de l'API de la classe TreeSet. Ici, nous allons discuter des constructeurs et des méthodes fournis par la classe TreeSet.
La classe TreeSet fournit des constructeurs surchargés pour construire un objet TreeSet.
Nous avons tabularisé ces constructeurs comme suit:
Constructeurs
Prototype de constructeur | Description | |
---|---|---|
contient | boolean contient (Object o) | Vérifie si TreeSet contient un élément donné; vrai si présent. |
TreeSet () | Constructeur par défaut pour créer un nouvel objet TreeSet vide. | |
TreeSet (Collection c) | Crée un nouvel objet TreeSet contenant les éléments de la collection donnée c, triés selon l'ordre naturel. | |
TreeSet (Comparateur comparateur) | Construit un nouvel objet TreeSet qui est vide et sera trié selon le comparateur spécifié. | |
TreeSet (SortedSet s) | Crée un nouvel objet TreeSet qui contient des éléments de sortedSet donnés. |
Méthodes
Ensuite, mettons sous forme de tableau les différentes méthodes fournies par la classe TreeSet.
Méthode | Prototype de méthode | Description |
---|---|---|
ajouter | booléen ajouter (E e) | Ajoute l’élément donné au TreeSet s’il n’y est pas déjà. |
tout ajouter | booléen addAll (Collection c) | Ajoute tous les éléments de la collection donnée c à l'ensemble. |
plafond | Plafond E (E e) | Renvoie l'élément supérieur ou égal à e (le plus petit élément); ou null si aucun élément n'est présent. |
dégager | vide clair () | Supprime tous les éléments du TreeSet. |
cloner | Clone d'objet () | Renvoie une copie superficielle de l'objet TreeSet. |
comparateur | Comparateur comparateur () | Renvoie le comparateur pour le TreeSet ou null si l'ordre naturel est utilisé. |
descendingIterator | Itérateur descendantIterator () | Renvoie un itérateur décroissant sur les éléments de TreeSet. |
décroissant | NavigableSet descendingSet () | Renvoie une vue des éléments du TreeSet dans l'ordre inverse. |
première | E en premier () | Renvoie le premier ou l'élément le plus bas du TreeSet. |
étage | E étage (E e) | Renvoie l'élément qui est inférieur ou égal à l'élément e donné dans le TreeSet. Renvoie null si aucun élément de ce type. |
casque | SortedSet headSet (E toElement) | renvoie un ensemble d'éléments qui sont strictement inférieurs au toElement donné |
NavigableSet headSet (E toElement, booléen inclus) | Renvoie un ensemble d'éléments qui sont égaux à (si inclusif = true) ou inférieurs à ceux donnés à Elément. | |
plus haut | E supérieur (E e) | Renvoie le plus petit élément de cet ensemble strictement supérieur à l'élément donné, ou nul s'il n'y en a pas. |
est vide | booléen isEmpty () | Vérifie si le TreeSet est vide. Renvoie vrai si vide. |
itérateur | Itérateur itérateur () | Renvoie un itérateur (par ordre croissant) pour le TreeSet. |
dernier | E dernier () | Renvoie le plus haut ou le dernier élément du TreeSet. |
plus bas | E inférieur (E e) | Renvoie l'élément (le plus grand élément) qui est strictement inférieur à l'élément e donné dans le TreeSet. |
pollFirst | E pollFirst () | Supprime et renvoie le premier élément (le plus bas) de l'ensemble; null si l'ensemble est vide. |
sondageDernier | E pollDernier () | Supprime et renvoie le dernier (plus grand) élément de l'ensemble; null si défini vide. |
supprimer | boolean remove (objet o) | Supprime l'élément donné de l'ensemble. |
Taille | taille int () | Renvoie la taille ou le nombre d'éléments présents dans le TreeSet. |
sous-ensemble | NavigableSet sous-ensemble (E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) | Renvoie une vue des éléments allant de fromElement à toElement. |
SortedSet sous-ensemble (E fromElement, E toElement) | Renvoie des éléments de vue allant de fromElement (inclus) à toElement (exclusif). | |
queue | SortedSet tailSet (E fromElement) | Renvoie une vue contenant des éléments supérieurs ou égaux au fromElement donné. |
NavigableSet tailSet (E fromElement, booléen inclus) | Renvoie une vue des éléments égaux à (si inclusive est true) ou supérieurs à fromElement. |
TreeSet dans Java 8
Veuillez noter que pour TreeSet, il n'y a pas de changements majeurs dans la version Java 8. Toutes les méthodes et tous les constructeurs fonctionnent sous Java 8 et les versions ultérieures.
Implémentation TreeSet en Java
Le programme Java suivant implémente la plupart des méthodes TreeSet décrites ci-dessus.
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()); } }
Production:
Contenu de l'arbre: 10 15 25 30 35
plafond (25): 25
au sol (25): 25
TreeSet contient (15): true
Taille de l'ensemble d'arbres: 5
TreeSet Premier élément: 10
TreeSet Dernier élément: 35
Élément 30 supprimé de TreeSet
TreeSet après suppression (): 10 15 25 35
TreeSet taille après remove (): 4
Casque: (10, 15, 25)
Taille de l'arbre défini après effacement (): 0
Dans le programme ci-dessus, nous définissons un objet TreeSet, puis nous y ajoutons des éléments en utilisant la méthode «add». Ensuite, nous définissons une ArrayList. Ensuite, nous ajoutons des éléments de ArrayList à TreeSet en utilisant la méthode «addAll». Plus tard, nous démontrons diverses méthodes TreeSet comme Iterator, plafond, sol, premier, dernier, contient, taille, isEmpty, etc.
TreeSet Vs HashSet
Voyons quelques-unes des différences entre TreeSet et HashSet.
TreeSet | HashSet |
---|---|
Les éléments sont classés selon l'ordre naturel. | Les éléments ne sont pas commandés. |
Prend du temps O (log N) pour des opérations telles que l'insertion, la suppression et la recherche, ce qui le rend plus lent que TreeSet. | Prend un temps constant pour les opérations de base telles que l'insertion, la suppression et la recherche, ce qui le rend plus rapide que TreeSet. |
N'autorise pas les objets nuls. | Autorise un objet nul. |
Utilise la méthode compareTo () pour comparer deux objets. | Utilise les méthodes compare () et equals () pour comparer deux objets. |
Implémenté en interne à l'aide de Navigable TreeMap. | Implémenté en interne à l'aide de HashMap. |
Possède une API riche en fonctionnalités qui peut effectuer diverses manipulations. | La fonctionnalité API de HashSet est plutôt limitée. |
Questions fréquemment posées
Q # 1) Qu'est-ce qu'un TreeSet?
Répondre: TreeSet est une implémentation de SortedSet qui n'autorise pas les valeurs en double. Les éléments du TreeSet sont par défaut triés par ordre croissant.
Q # 2) Comment ajouter des éléments à TreeSet en Java?
Répondre: La classe TreeSet fournit une méthode add qui est utilisée pour ajouter un élément spécifique au TreeSet. Il fournit également la méthode «addAll». Cette méthode accepte toute autre collection comme argument, puis ajoute tous les éléments de cette collection au TreeSet.
Q # 3) TreeSet est-il thread-safe?
Répondre: Non. TreeSet n'est pas thread-safe. Nous devons donc nous occuper de la façon dont nous opérons TreeSet dans un environnement multi-thread.
Q # 4) TreeSet peut-il avoir des doublons?
Répondre: Non. TreeSet n'autorise pas les doublons.
Q # 5)TreeSet autorise-t-il null en Java?
Répondre: Oui. Nous pouvons avoir des éléments nuls dans TreeSet.
Conclusion
Ceci termine notre tutoriel sur TreeSet. TreeSet est une implémentation de SortedSet qui n'autorise pas les doublons mais autorise les valeurs nulles. Les éléments du TreeSet sont par défaut triés selon l'ordre naturel dans l'ordre croissant.
Nous avons vu les bases de la classe TreeSet avec sa déclaration et divers constructeurs et méthodes.
Dans nos didacticiels suivants, nous aborderons les classes de collection Java restantes.
=> Regardez la série de formation Java simple ici.
lecture recommandée
- Arborescence de recherche binaire en Java - Exemples d'implémentation et de code
- TreeMap en Java - Tutoriel avec des exemples de TreeMap Java
- Qu'est-ce que le vecteur Java | Tutoriel de classe vectorielle Java avec des exemples
- Tutoriel de classe de scanner Java avec des exemples
- Tutoriel sur les classes Java Array - Classe java.util.Arrays avec exemples
- Tutoriel JAVA pour les débutants: plus de 100 tutoriels vidéo Java pratiques
- Tutoriel sur la méthode Java String contains () avec des exemples
- Jagged Array In Java - Tutoriel avec des exemples