English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans ce tutoriel, nous allons apprendre la classe Java TreeSet et ses différentes opérations et méthodes à l'aide d'exemples.
La classe TreeSet du Java Collection Framework fournit les fonctionnalités de la structure de données arbre.
Elle étendL'interface NavigableSet。
Pour créer un TreeSet, nous devons d'abord importer le paquet java.util.TreeSet.
Après avoir importé le paquet, voici comment créer un TreeSet en Java.
TreeSetnumbers = new TreeSet<>();
Ici, nous avons créé un TreeSet sans aucun paramètre. Dans cet exemple, les éléments du TreeSet sont triés de manière naturelle (croissant).
Mais nous pouvons utiliser l'interface Comparator pour personnaliser le tri des éléments. Nous en apprendrons davantage sur cela dans la partie suivante de ce tutoriel.
La classe TreeSet fournit diverses méthodes qui permettent d'exécuter diverses opérations sur le jeu.
add() - Insère l'élément spécifié dans le jeu
addAll() - Insère tous les éléments du jeu spécifié dans le jeu
Par exemple,
import java.util.TreeSet; class Main { public static void main(String[] args) { TreeSetevenNumbers = new TreeSet<>(); // Utilisation de la méthode add() evenNumbers.add(2); evenNumbers.add(4); evenNumbers.add(6); System.out.println("TreeSet: " + evenNumbers); TreeSet numbers = new TreeSet<>(); numbers.add(1); // Utilisation de la méthode addAll() numbers.addAll(evenNumbers); System.out.println("Nouveau TreeSet: " + numbers); } }
Output result
TreeSet: [2, 4, 6] Nouveau TreeSet: [1, 2, 4, 6]
Pour accéder aux éléments du TreeSet, nous pouvons utiliser la méthode iterator(). Pour utiliser cette méthode, nous devons importer le paquet java.util.Iterator. Par exemple,
import java.util.TreeSet; import java.util.Iterator; class Main { public static void main(String[] args) { TreeSetnumbers = new TreeSet<>(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("TreeSet: " + numbers); // Appel de la méthode iterator() Iterator<Integer> iterate = numbers.iterator(); System.out.print("TreeSet utilise l'itérateur: "); //Accès aux éléments while(iterate.hasNext()) { System.out.print(iterate.next()); System.out.print(", "); } } }
Output result
TreeSet: [2, 5, 6] TreeSet utilise l'itérateur: 2, 5, 6,
remove() - Supprime l'élément spécifié du jeu
removeAll() - Supprime tous les éléments du jeu
Par exemple,
import java.util.TreeSet; class Main { public static void main(String[] args) { TreeSetnumbers = new TreeSet<>(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("TreeSet: " + numbers); // Utilisation de la méthode remove() boolean value1 = numbers.remove(5); System.out.println("5Est-ce que cela a été supprimé? \ + value1); // Utilisation de la méthode removeAll() boolean value2 = numbers.removeAll(numbers); System.out.println("Supprime-t-on tous les éléments? ", + value2); } }
Output result
TreeSet: [2, 5, 6] 5Est-ce que cela a été supprimé? true Supprime-t-on tous les éléments? true
Comme la classe TreeSet implémente NavigableSet, elle fournit diverses méthodes pour naviguer dans les éléments du TreeSet.
first() - Retourne l'élément premier du jeu
last() - Retourne l'élément final du jeu
Par exemple,
import java.util.TreeSet; class Main { public static void main(String[] args) { TreeSetnumbers = new TreeSet<>(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("TreeSet: " + numbers); // Utilisation de la méthode first() int first = numbers.first(); System.out.println("Le premier nombre: ", + first); // Utilisation de last() méthode int last = numbers.last(); System.out.println("Dernier nombre: " + last); } }
Output result
TreeSet: [2, 5, 6] Premier nombre: 2 Dernier nombre: 6
Higher(element) - Retourner l'élément le plus petit des éléments supérieurs à l'élément spécifié (element).
lower(element) - Retourner l'élément le plus grand inférieur à l'élément spécifié (element).
ceiling(element) - Retourner l'élément le plus petit des éléments supérieurs à l'élément spécifié (element). Si l'élément spécifié (element) existe dans le TreeSet, retourner l'élément spécifié (element) passé en paramètre.
floor(element) - Retourner l'élément le plus grand inférieur à l'élément spécifié (element). Si l'élément spécifié (element) existe dans le TreeSet, retourner l'élément spécifié (element) passé en paramètre.
Par exemple,
import java.util.TreeSet; class Main { public static void main(String[] args) { TreeSetnumbers = new TreeSet<>(); numbers.add(2); numbers.add(5); numbers.add(4); numbers.add(6); System.out.println("TreeSet: " + numbers); // Utilisation de higher() System.out.println("Utilisation de higher: " + numbers.higher(4)); // Utilisation de lower() System.out.println("Utilisation de lower: " + numbers.lower(4)); // Utilisation de ceiling() System.out.println("Utilisation de ceiling: " + numbers.ceiling(4)); // Utilisation de floor() System.out.println("Utilisation de floor: " + numbers.floor(3)); } }
Output result
TreeSet: [2, 4, 5, 6] Utilisation de higher: 5 Utilisation de lower: 2 Utilisation de ceiling: 4 Utilisation de floor: 2
pollFirst() - Retourner et supprimer l'élément premier de la collection
pollLast() - Retourner et supprimer l'élément dernier de la collection
Par exemple,
import java.util.TreeSet; class Main { public static void main(String[] args) { TreeSetnumbers = new TreeSet<>(); numbers.add(2); numbers.add(5); numbers.add(4); numbers.add(6); System.out.println("TreeSet: " + numbers); // Utilisation de pollFirst() System.out.println("Suppression du premier élément: " + numbers.pollFirst()); // Utilisation de pollLast() System.out.println("Suppression du dernier élément: " + numbers.pollLast()); System.out.println("Nouveau TreeSet: " + numbers); } }
Output result
TreeSet: [2, 4, 5, 6] Suppression du premier élément: 2 Suppression du dernier élément: 6 Nouveau TreeSet: [4, 5]
La méthode headSet() renvoie tous les éléments de l'ensemble arbre avant l'élément spécifié (transmis en tant que paramètre).
Le paramètre booleanValue est optionnel. La valeur par défaut est false.
si la valeur de booleanValue est true, cette méthode renvoie tous les éléments avant l'élément spécifié, y compris l'élément spécifié.
Par exemple,
import java.util.TreeSet; class Main { public static void main(String[] args) { TreeSetnumbers = new TreeSet<>(); numbers.add(2); numbers.add(5); numbers.add(4); numbers.add(6); System.out.println("TreeSet: " + numbers); // Utilisation de headSet() avec la valeur booléenne par défaut System.out.println("Utilisation de headSet sans valeur booléenne: ") + numbers.headSet(5)); // Utilisation de headSet() avec une valeur booléenne spécifiée System.out.println("Utilisation de headSet avec une valeur booléenne: ") + numbers.headSet(5, true)); } }
Output result
TreeSet: [2, 4, 5, 6] Utilisation de headSet sans valeur booléenne: [2, 4] Utilisation de headSet avec une valeur booléenne: [2, 4, 5]
La méthode tailSet() renvoie tous les éléments de l'ensemble arbre après l'élément spécifié (transmis en tant que paramètre).
Le paramètre booleanValue est optionnel. La valeur par défaut est true.
si false est transmis en tant que a en tant que booleanValue, cette méthode renvoie tous les éléments spécifiés après, sans inclure l'élément spécifié.
Par exemple,
import java.util.TreeSet; class Main { public static void main(String[] args) { TreeSetnumbers = new TreeSet<>(); numbers.add(2); numbers.add(5); numbers.add(4); numbers.add(6); System.out.println("TreeSet: " + numbers); // Utilisation de tailSet() avec la valeur booléenne par défaut System.out.println("tailSet() utilise la valeur booléenne par défaut: ") + numbers.tailSet(4)); // Utilisation de tailSet() avec une valeur booléenne spécifiée System.out.println("tailSet() avec une valeur booléenne: ") + numbers.tailSet(4, false)); } }
Output result
TreeSet: [2, 4, 5, 6] Utilisation de tailSet() avec la valeur booléenne par défaut: [4, 5, 6] tailSet() avec une valeur booléenne: [5, 6]
la méthode subSet() renvoie e1et e2tous les éléments entre1。
bv1et bv2est un paramètre optionnel. bv1valeur par défaut est true, bv2valeur par défaut est false.
si false est transmis en tant que bv1si e est transmis, cette méthode renvoie e1et e2tous les éléments entre1。
si true est transmis en tant que bv2si e est transmis, cette méthode renvoie e1et e2tous les éléments entre1。
Par exemple,
import java.util.TreeSet; class Main { public static void main(String[] args) { TreeSetnumbers = new TreeSet<>(); numbers.add(2); numbers.add(5); numbers.add(4); numbers.add(6); System.out.println("TreeSet: " + numbers); // Utilisation de subSet() avec la valeur booléenne par défaut System.out.println("subSet() utilise la valeur booléenne par défaut: " + numbers.subSet(4, 6)); // 使用 subSet() 使用指定的布尔值 System.out.println("subSet()使用指定的布尔值: " + numbers.subSet(4, false, 6, true)); } }
Output result
TreeSet: [2, 4, 5, 6] subSet()使用默认布尔值: [4, 5] subSet()使用指定的布尔值: [5, 6]
TreeSet类的方法还可以用于执行各种集合操作。
为了执行两个集合之间的并集,我们使用 addAll()方法。例如,
import java.util.TreeSet;; class Main { public static void main(String[] args) { TreeSetevenNumbers = new TreeSet<>(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("Arbre en ordre", "第2段":"boolean result = numbers.containsAll(primeNumbers);", "第3段":"Vérifier si primeNumbers est un sous-ensemble de numbers", "第4段":"primeNumbers);", "第5段":": "", "第6段":"primeNumbers.add("", "第7段":"TreeSet<Integer> primeNumbers = new TreeSet<>();", "第8段":"numbers);", "第9段":"numbers.add("", "第10段":"TreeSet<Integer> numbers = new TreeSet<>();", "第11段":"Pour vérifier si un ensemble est un sous-ensemble d'un autre ensemble, nous utilisons la méthode containsAll(). Par exemple,"", "第12段":"Sous-ensemble de l'ensemble", "第13段":"Différence de l'ensemble: [", "第14段":"System.out.println("Différence de l'ensemble: ", "第15段":"numbers.removeAll(evenNumbers);", "第16段":"Différence de l'ensemble de l'ensemble", "第17段":"evenNumbers);", "第18段":"evenNumbers.add("", "第19段":"TreeSet<Integer> evenNumbers = new TreeSet<>();", "第20段":"import java.util.TreeSet;;", "第21段":"Pour calculer la différence entre deux ensembles, nous pouvons utiliser la méthode removeAll(). Par exemple,"", "第22段":"Intersection de l'ensemble: [", "第23段":"System.out.println("Intersection de l'ensemble: ", "第24段":"numbers.retainAll(evenNumbers);", "第25段":"Intersection de deux ensembles", "第26段":"Pour exécuter l'intersection entre deux ensembles, nous utilisons la méthode retainAll(). Par exemple,"", "第27段":"Intersection de l'ensemble", "第28段":"Union de l'ensemble: [", "第29段":"System.out.println("Union est: ", "第30段":"numbers.addAll(evenNumbers);", "第31段":"Union de deux ensembles", "第32段":"Pour exécuter l'union entre deux ensembles, nous utilisons la méthode addAll(). Par exemple,"", "第33段":"Union de l'ensemble", "第34段":"Les méthodes de la classe TreeSet peuvent également être utilisées pour exécuter diverses opérations sur les ensembles."", "第35段":"Méthodes d'opérations sur l'ensemble", "第36段":"subSet() utilise la valeur booléenne spécifiée: [", "第37段":"subSet() utilise la valeur booléenne par défaut: [", "第38段":"TreeSet: [", "第39段":", true));", "第40段":", false,"", "第41段":"numbers.subSet("", "第42段":"System.out.println("subSet() utilise la valeur booléenne spécifiée: ", "第43段":"Utilisation de subSet() avec la valeur booléenne spécifiée", "第44段":")}}1: " + evenNumbers); TreeSet numbers = new TreeSet<>(); numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("Arbre en ordre", "第2段":"boolean result = numbers.containsAll(primeNumbers);", "第3段":"Vérifier si primeNumbers est un sous-ensemble de numbers", "第4段":"primeNumbers);", "第5段":": "", "第6段":"primeNumbers.add("", "第7段":"TreeSet<Integer> primeNumbers = new TreeSet<>();", "第8段":"numbers);", "第9段":"numbers.add("", "第10段":"TreeSet<Integer> numbers = new TreeSet<>();", "第11段":"Pour vérifier si un ensemble est un sous-ensemble d'un autre ensemble, nous utilisons la méthode containsAll(). Par exemple,"", "第12段":"Sous-ensemble de l'ensemble", "第13段":"Différence de l'ensemble: [", "第14段":"System.out.println("Différence de l'ensemble: ", "第15段":"numbers.removeAll(evenNumbers);", "第16段":"Différence de l'ensemble de l'ensemble", "第17段":"evenNumbers);", "第18段":"evenNumbers.add("", "第19段":"TreeSet<Integer> evenNumbers = new TreeSet<>();", "第20段":"import java.util.TreeSet;;", "第21段":"Pour calculer la différence entre deux ensembles, nous pouvons utiliser la méthode removeAll(). Par exemple,"", "第22段":"Intersection de l'ensemble: [", "第23段":"System.out.println("Intersection de l'ensemble: ", "第24段":"numbers.retainAll(evenNumbers);", "第25段":"Intersection de deux ensembles", "第26段":"Pour exécuter l'intersection entre deux ensembles, nous utilisons la méthode retainAll(). Par exemple,"", "第27段":"Intersection de l'ensemble", "第28段":"Union de l'ensemble: [", "第29段":"System.out.println("Union est: ", "第30段":"numbers.addAll(evenNumbers);", "第31段":"Union de deux ensembles", "第32段":"Pour exécuter l'union entre deux ensembles, nous utilisons la méthode addAll(). Par exemple,"", "第33段":"Union de l'ensemble", "第34段":"Les méthodes de la classe TreeSet peuvent également être utilisées pour exécuter diverses opérations sur les ensembles."", "第35段":"Méthodes d'opérations sur l'ensemble", "第36段":"subSet() utilise la valeur booléenne spécifiée: [", "第37段":"subSet() utilise la valeur booléenne par défaut: [", "第38段":"TreeSet: [", "第39段":", true));", "第40段":", false,"", "第41段":"numbers.subSet("", "第42段":"System.out.println("subSet() utilise la valeur booléenne spécifiée: ", "第43段":"Utilisation de subSet() avec la valeur booléenne spécifiée", "第44段":")}}2: " + numbers); //两个集合的并集 numbers.addAll(evenNumbers); System.out.println("Union is: " + numbers); } }
Output result
TreeSet1: [2, 4] TreeSet2: [1, 2, 3] 并集: [1, 2, 3, 4]
为了执行两个集合之间的交集,我们使用retainAll()方法。例如,
import java.util.TreeSet;; class Main { public static void main(String[] args) { TreeSetevenNumbers = new TreeSet<>(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("Arbre en ordre", "第2段":"boolean result = numbers.containsAll(primeNumbers);", "第3段":"Vérifier si primeNumbers est un sous-ensemble de numbers", "第4段":"primeNumbers);", "第5段":": "", "第6段":"primeNumbers.add("", "第7段":"TreeSet<Integer> primeNumbers = new TreeSet<>();", "第8段":"numbers);", "第9段":"numbers.add("", "第10段":"TreeSet<Integer> numbers = new TreeSet<>();", "第11段":"Pour vérifier si un ensemble est un sous-ensemble d'un autre ensemble, nous utilisons la méthode containsAll(). Par exemple,"", "第12段":"Sous-ensemble de l'ensemble", "第13段":"Différence de l'ensemble: [", "第14段":"System.out.println("Différence de l'ensemble: ", "第15段":"numbers.removeAll(evenNumbers);", "第16段":"Différence de l'ensemble de l'ensemble", "第17段":"evenNumbers);", "第18段":"evenNumbers.add("", "第19段":"TreeSet<Integer> evenNumbers = new TreeSet<>();", "第20段":"import java.util.TreeSet;;", "第21段":"Pour calculer la différence entre deux ensembles, nous pouvons utiliser la méthode removeAll(). Par exemple,"", "第22段":"Intersection de l'ensemble: [", "第23段":"System.out.println("Intersection de l'ensemble: ", "第24段":"numbers.retainAll(evenNumbers);", "第25段":"Intersection de deux ensembles", "第26段":"Pour exécuter l'intersection entre deux ensembles, nous utilisons la méthode retainAll(). Par exemple,"", "第27段":"Intersection de l'ensemble", "第28段":"Union de l'ensemble: [", "第29段":"System.out.println("Union est: ", "第30段":"numbers.addAll(evenNumbers);", "第31段":"Union de deux ensembles", "第32段":"Pour exécuter l'union entre deux ensembles, nous utilisons la méthode addAll(). Par exemple,"", "第33段":"Union de l'ensemble", "第34段":"Les méthodes de la classe TreeSet peuvent également être utilisées pour exécuter diverses opérations sur les ensembles."", "第35段":"Méthodes d'opérations sur l'ensemble", "第36段":"subSet() utilise la valeur booléenne spécifiée: [", "第37段":"subSet() utilise la valeur booléenne par défaut: [", "第38段":"TreeSet: [", "第39段":", true));", "第40段":", false,"", "第41段":"numbers.subSet("", "第42段":"System.out.println("subSet() utilise la valeur booléenne spécifiée: ", "第43段":"Utilisation de subSet() avec la valeur booléenne spécifiée", "第44段":")}}1: " + evenNumbers); TreeSet numbers = new TreeSet<>(); numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("Arbre en ordre", "第2段":"boolean result = numbers.containsAll(primeNumbers);", "第3段":"Vérifier si primeNumbers est un sous-ensemble de numbers", "第4段":"primeNumbers);", "第5段":": "", "第6段":"primeNumbers.add("", "第7段":"TreeSet<Integer> primeNumbers = new TreeSet<>();", "第8段":"numbers);", "第9段":"numbers.add("", "第10段":"TreeSet<Integer> numbers = new TreeSet<>();", "第11段":"Pour vérifier si un ensemble est un sous-ensemble d'un autre ensemble, nous utilisons la méthode containsAll(). Par exemple,"", "第12段":"Sous-ensemble de l'ensemble", "第13段":"Différence de l'ensemble: [", "第14段":"System.out.println("Différence de l'ensemble: ", "第15段":"numbers.removeAll(evenNumbers);", "第16段":"Différence de l'ensemble de l'ensemble", "第17段":"evenNumbers);", "第18段":"evenNumbers.add("", "第19段":"TreeSet<Integer> evenNumbers = new TreeSet<>();", "第20段":"import java.util.TreeSet;;", "第21段":"Pour calculer la différence entre deux ensembles, nous pouvons utiliser la méthode removeAll(). Par exemple,"", "第22段":"Intersection de l'ensemble: [", "第23段":"System.out.println("Intersection de l'ensemble: ", "第24段":"numbers.retainAll(evenNumbers);", "第25段":"Intersection de deux ensembles", "第26段":"Pour exécuter l'intersection entre deux ensembles, nous utilisons la méthode retainAll(). Par exemple,"", "第27段":"Intersection de l'ensemble", "第28段":"Union de l'ensemble: [", "第29段":"System.out.println("Union est: ", "第30段":"numbers.addAll(evenNumbers);", "第31段":"Union de deux ensembles", "第32段":"Pour exécuter l'union entre deux ensembles, nous utilisons la méthode addAll(). Par exemple,"", "第33段":"Union de l'ensemble", "第34段":"Les méthodes de la classe TreeSet peuvent également être utilisées pour exécuter diverses opérations sur les ensembles."", "第35段":"Méthodes d'opérations sur l'ensemble", "第36段":"subSet() utilise la valeur booléenne spécifiée: [", "第37段":"subSet() utilise la valeur booléenne par défaut: [", "第38段":"TreeSet: [", "第39段":", true));", "第40段":", false,"", "第41段":"numbers.subSet("", "第42段":"System.out.println("subSet() utilise la valeur booléenne spécifiée: ", "第43段":"Utilisation de subSet() avec la valeur booléenne spécifiée", "第44段":")}}2: " + numbers); // 两个集合的交集 numbers.retainAll(evenNumbers); System.out.println("集合的交集: " + numbers); } }
Output result
TreeSet1: [2, 4] TreeSet2: [1, 2, 3] 集合的交集: [2]
要计算两组之间的差集,我们可以使用removeAll()方法。例如,
import java.util.TreeSet;; class Main { public static void main(String[] args) { TreeSetevenNumbers = new TreeSet<>(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("Arbre en ordre", "第2段":"boolean result = numbers.containsAll(primeNumbers);", "第3段":"Vérifier si primeNumbers est un sous-ensemble de numbers", "第4段":"primeNumbers);", "第5段":": "", "第6段":"primeNumbers.add("", "第7段":"TreeSet<Integer> primeNumbers = new TreeSet<>();", "第8段":"numbers);", "第9段":"numbers.add("", "第10段":"TreeSet<Integer> numbers = new TreeSet<>();", "第11段":"Pour vérifier si un ensemble est un sous-ensemble d'un autre ensemble, nous utilisons la méthode containsAll(). Par exemple,"", "第12段":"Sous-ensemble de l'ensemble", "第13段":"Différence de l'ensemble: [", "第14段":"System.out.println("Différence de l'ensemble: ", "第15段":"numbers.removeAll(evenNumbers);", "第16段":"Différence de l'ensemble de l'ensemble", "第17段":"evenNumbers);", "第18段":"evenNumbers.add("", "第19段":"TreeSet<Integer> evenNumbers = new TreeSet<>();", "第20段":"import java.util.TreeSet;;", "第21段":"Pour calculer la différence entre deux ensembles, nous pouvons utiliser la méthode removeAll(). Par exemple,"", "第22段":"Intersection de l'ensemble: [", "第23段":"System.out.println("Intersection de l'ensemble: ", "第24段":"numbers.retainAll(evenNumbers);", "第25段":"Intersection de deux ensembles", "第26段":"Pour exécuter l'intersection entre deux ensembles, nous utilisons la méthode retainAll(). Par exemple,"", "第27段":"Intersection de l'ensemble", "第28段":"Union de l'ensemble: [", "第29段":"System.out.println("Union est: ", "第30段":"numbers.addAll(evenNumbers);", "第31段":"Union de deux ensembles", "第32段":"Pour exécuter l'union entre deux ensembles, nous utilisons la méthode addAll(). Par exemple,"", "第33段":"Union de l'ensemble", "第34段":"Les méthodes de la classe TreeSet peuvent également être utilisées pour exécuter diverses opérations sur les ensembles."", "第35段":"Méthodes d'opérations sur l'ensemble", "第36段":"subSet() utilise la valeur booléenne spécifiée: [", "第37段":"subSet() utilise la valeur booléenne par défaut: [", "第38段":"TreeSet: [", "第39段":", true));", "第40段":", false,"", "第41段":"numbers.subSet("", "第42段":"System.out.println("subSet() utilise la valeur booléenne spécifiée: ", "第43段":"Utilisation de subSet() avec la valeur booléenne spécifiée", "第44段":")}}1: " + evenNumbers); TreeSet numbers = new TreeSet<>(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); System.out.println("Arbre en ordre", "第2段":"boolean result = numbers.containsAll(primeNumbers);", "第3段":"Vérifier si primeNumbers est un sous-ensemble de numbers", "第4段":"primeNumbers);", "第5段":": "", "第6段":"primeNumbers.add("", "第7段":"TreeSet<Integer> primeNumbers = new TreeSet<>();", "第8段":"numbers);", "第9段":"numbers.add("", "第10段":"TreeSet<Integer> numbers = new TreeSet<>();", "第11段":"Pour vérifier si un ensemble est un sous-ensemble d'un autre ensemble, nous utilisons la méthode containsAll(). Par exemple,"", "第12段":"Sous-ensemble de l'ensemble", "第13段":"Différence de l'ensemble: [", "第14段":"System.out.println("Différence de l'ensemble: ", "第15段":"numbers.removeAll(evenNumbers);", "第16段":"Différence de l'ensemble de l'ensemble", "第17段":"evenNumbers);", "第18段":"evenNumbers.add("", "第19段":"TreeSet<Integer> evenNumbers = new TreeSet<>();", "第20段":"import java.util.TreeSet;;", "第21段":"Pour calculer la différence entre deux ensembles, nous pouvons utiliser la méthode removeAll(). Par exemple,"", "第22段":"Intersection de l'ensemble: [", "第23段":"System.out.println("Intersection de l'ensemble: ", "第24段":"numbers.retainAll(evenNumbers);", "第25段":"Intersection de deux ensembles", "第26段":"Pour exécuter l'intersection entre deux ensembles, nous utilisons la méthode retainAll(). Par exemple,"", "第27段":"Intersection de l'ensemble", "第28段":"Union de l'ensemble: [", "第29段":"System.out.println("Union est: ", "第30段":"numbers.addAll(evenNumbers);", "第31段":"Union de deux ensembles", "第32段":"Pour exécuter l'union entre deux ensembles, nous utilisons la méthode addAll(). Par exemple,"", "第33段":"Union de l'ensemble", "第34段":"Les méthodes de la classe TreeSet peuvent également être utilisées pour exécuter diverses opérations sur les ensembles."", "第35段":"Méthodes d'opérations sur l'ensemble", "第36段":"subSet() utilise la valeur booléenne spécifiée: [", "第37段":"subSet() utilise la valeur booléenne par défaut: [", "第38段":"TreeSet: [", "第39段":", true));", "第40段":", false,"", "第41段":"numbers.subSet("", "第42段":"System.out.println("subSet() utilise la valeur booléenne spécifiée: ", "第43段":"Utilisation de subSet() avec la valeur booléenne spécifiée", "第44段":")}}2: " + numbers); //集合的差集 numbers.removeAll(evenNumbers); System.out.println("差集: " + numbers); } }
Output result
TreeSet1: [2, 4] TreeSet2: [1, 2, 3, 4] 差集: [1, 3]
为了检查一个集合是否是另一个集合的子集,我们使用containsAll()方法。例如,
import java.util.TreeSet; class Main { public static void main(String[] args) { TreeSetnumbers = new TreeSet<>(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); System.out.println("Arbre en ordre", "第2段":"boolean result = numbers.containsAll(primeNumbers);", "第3段":"Vérifier si primeNumbers est un sous-ensemble de numbers", "第4段":"primeNumbers);", "第5段":": "", "第6段":"primeNumbers.add("", "第7段":"TreeSet<Integer> primeNumbers = new TreeSet<>();", "第8段":"numbers);", "第9段":"numbers.add("", "第10段":"TreeSet<Integer> numbers = new TreeSet<>();", "第11段":"Pour vérifier si un ensemble est un sous-ensemble d'un autre ensemble, nous utilisons la méthode containsAll(). Par exemple,"", "第12段":"Sous-ensemble de l'ensemble", "第13段":"Différence de l'ensemble: [", "第14段":"System.out.println("Différence de l'ensemble: ", "第15段":"numbers.removeAll(evenNumbers);", "第16段":"Différence de l'ensemble de l'ensemble", "第17段":"evenNumbers);", "第18段":"evenNumbers.add("", "第19段":"TreeSet<Integer> evenNumbers = new TreeSet<>();", "第20段":"import java.util.TreeSet;;", "第21段":"Pour calculer la différence entre deux ensembles, nous pouvons utiliser la méthode removeAll(). Par exemple,"", "第22段":"Intersection de l'ensemble: [", "第23段":"System.out.println("Intersection de l'ensemble: ", "第24段":"numbers.retainAll(evenNumbers);", "第25段":"Intersection de deux ensembles", "第26段":"Pour exécuter l'intersection entre deux ensembles, nous utilisons la méthode retainAll(). Par exemple,"", "第27段":"Intersection de l'ensemble", "第28段":"Union de l'ensemble: [", "第29段":"System.out.println("Union est: ", "第30段":"numbers.addAll(evenNumbers);", "第31段":"Union de deux ensembles", "第32段":"Pour exécuter l'union entre deux ensembles, nous utilisons la méthode addAll(). Par exemple,"", "第33段":"Union de l'ensemble", "第34段":"Les méthodes de la classe TreeSet peuvent également être utilisées pour exécuter diverses opérations sur les ensembles."", "第35段":"Méthodes d'opérations sur l'ensemble", "第36段":"subSet() utilise la valeur booléenne spécifiée: [", "第37段":"subSet() utilise la valeur booléenne par défaut: [", "第38段":"TreeSet: [", "第39段":", true));", "第40段":", false,"", "第41段":"numbers.subSet("", "第42段":"System.out.println("subSet() utilise la valeur booléenne spécifiée: ", "第43段":"Utilisation de subSet() avec la valeur booléenne spécifiée", "第44段":")}}1: " + numbers); TreeSet primeNumbers = new TreeSet<>(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("Arbre en ordre", "第2段":"boolean result = numbers.containsAll(primeNumbers);", "第3段":"Vérifier si primeNumbers est un sous-ensemble de numbers", "第4段":"primeNumbers);", "第5段":": "", "第6段":"primeNumbers.add("", "第7段":"TreeSet<Integer> primeNumbers = new TreeSet<>();", "第8段":"numbers);", "第9段":"numbers.add("", "第10段":"TreeSet<Integer> numbers = new TreeSet<>();", "第11段":"Pour vérifier si un ensemble est un sous-ensemble d'un autre ensemble, nous utilisons la méthode containsAll(). Par exemple,"", "第12段":"Sous-ensemble de l'ensemble", "第13段":"Différence de l'ensemble: [", "第14段":"System.out.println("Différence de l'ensemble: ", "第15段":"numbers.removeAll(evenNumbers);", "第16段":"Différence de l'ensemble de l'ensemble", "第17段":"evenNumbers);", "第18段":"evenNumbers.add("", "第19段":"TreeSet<Integer> evenNumbers = new TreeSet<>();", "第20段":"import java.util.TreeSet;;", "第21段":"Pour calculer la différence entre deux ensembles, nous pouvons utiliser la méthode removeAll(). Par exemple,"", "第22段":"Intersection de l'ensemble: [", "第23段":"System.out.println("Intersection de l'ensemble: ", "第24段":"numbers.retainAll(evenNumbers);", "第25段":"Intersection de deux ensembles", "第26段":"Pour exécuter l'intersection entre deux ensembles, nous utilisons la méthode retainAll(). Par exemple,"", "第27段":"Intersection de l'ensemble", "第28段":"Union de l'ensemble: [", "第29段":"System.out.println("Union est: ", "第30段":"numbers.addAll(evenNumbers);", "第31段":"Union de deux ensembles", "第32段":"Pour exécuter l'union entre deux ensembles, nous utilisons la méthode addAll(). Par exemple,"", "第33段":"Union de l'ensemble", "第34段":"Les méthodes de la classe TreeSet peuvent également être utilisées pour exécuter diverses opérations sur les ensembles."", "第35段":"Méthodes d'opérations sur l'ensemble", "第36段":"subSet() utilise la valeur booléenne spécifiée: [", "第37段":"subSet() utilise la valeur booléenne par défaut: [", "第38段":"TreeSet: [", "第39段":", true));", "第40段":", false,"", "第41段":"numbers.subSet("", "第42段":"System.out.println("subSet() utilise la valeur booléenne spécifiée: ", "第43段":"Utilisation de subSet() avec la valeur booléenne spécifiée", "第44段":")}}2: " + primeNumbers); //检查primeNumbers是否为numbers子集 boolean result = numbers.containsAll(primeNumbers); System.out.println("Arbre en ordre", "第2段":"boolean result = numbers.containsAll(primeNumbers);", "第3段":"Vérifier si primeNumbers est un sous-ensemble de numbers", "第4段":"primeNumbers);", "第5段":": "", "第6段":"primeNumbers.add("", "第7段":"TreeSet<Integer> primeNumbers = new TreeSet<>();", "第8段":"numbers);", "第9段":"numbers.add("", "第10段":"TreeSet<Integer> numbers = new TreeSet<>();", "第11段":"Pour vérifier si un ensemble est un sous-ensemble d'un autre ensemble, nous utilisons la méthode containsAll(). Par exemple,"", "第12段":"Sous-ensemble de l'ensemble", "第13段":"Différence de l'ensemble: [", "第14段":"System.out.println("Différence de l'ensemble: ", "第15段":"numbers.removeAll(evenNumbers);", "第16段":"Différence de l'ensemble de l'ensemble", "第17段":"evenNumbers);", "第18段":"evenNumbers.add("", "第19段":"TreeSet<Integer> evenNumbers = new TreeSet<>();", "第20段":"import java.util.TreeSet;;", "第21段":"Pour calculer la différence entre deux ensembles, nous pouvons utiliser la méthode removeAll(). Par exemple,"", "第22段":"Intersection de l'ensemble: [", "第23段":"System.out.println("Intersection de l'ensemble: ", "第24段":"numbers.retainAll(evenNumbers);", "第25段":"Intersection de deux ensembles", "第26段":"Pour exécuter l'intersection entre deux ensembles, nous utilisons la méthode retainAll(). Par exemple,"", "第27段":"Intersection de l'ensemble", "第28段":"Union de l'ensemble: [", "第29段":"System.out.println("Union est: ", "第30段":"numbers.addAll(evenNumbers);", "第31段":"Union de deux ensembles", "第32段":"Pour exécuter l'union entre deux ensembles, nous utilisons la méthode addAll(). Par exemple,"", "第33段":"Union de l'ensemble", "第34段":"Les méthodes de la classe TreeSet peuvent également être utilisées pour exécuter diverses opérations sur les ensembles."", "第35段":"Méthodes d'opérations sur l'ensemble", "第36段":"subSet() utilise la valeur booléenne spécifiée: [", "第37段":"subSet() utilise la valeur booléenne par défaut: [", "第38段":"TreeSet: [", "第39段":", true));", "第40段":", false,"", "第41段":"numbers.subSet("", "第42段":"System.out.println("subSet() utilise la valeur booléenne spécifiée: ", "第43段":"Utilisation de subSet() avec la valeur booléenne spécifiée", "第44段":")}}2C'est TreeSet1Est-ce que c'est un sous-ensemble? " + result); } }
Output result
TreeSet1: [1, 2, 3, 4] TreeSet2: [2, 3] TreeSet2C'est TreeSet1Est-ce que c'est un sous-ensemble? True
Méthode | Description |
---|---|
clone() | Créer une copie de TreeSet |
contains() | Rechercher l'élément spécifié dans TreeSet et renvoyer un résultat booléen |
isEmpty() | Vérifier si TreeSet est vide |
size() | Retourner la taille de TreeSet |
clear() | Supprimer tous les éléments de TreeSet |
TreeSet et HashSet implémentent toutes deux l'interface Set. Cependant, il existe des différences entre eux.
Contrairement à HashSet, les éléments dans TreeSet sont stockés dans un certain ordre. C'est parce que TreeSet implémente également l'interface SortedSet.
TreeSet propose quelques méthodes faciles à naviguer. Par exemple first(), last(), headSet(), tailSet() et autres. C'est parce que TreeSet implémente également l'interface NavigableSet.
Pour les opérations de base telles que l'ajout, la suppression, la contenance et la taille, HashSet est plus rapide que TreeSet.
Dans tous les exemples ci-dessus, les éléments de la collection arbre sont triés de manière naturelle. Cependant, nous pouvons également définir notre propre ordre des éléments.
Pour cela, nous devons créer notre propre classe comparator, basée sur le tri des éléments dans la collection arbre. Par exemple
import java.util.TreeSet; import java.util.Comparator; class Main { public static void main(String[] args) { //Créer un TreeSet avec un comparateur personnalisé TreeSet<String> animals = new TreeSet<>(new CustomComparator()); animals.add("Dog"); animals.add("Zebra"); animals.add("Cat"); animals.add("Horse"); System.out.println("TreeSet: " + animals); } //Créer une classe comparateur public static class CustomComparator implements Comparator<String> { @Override public int compare(String animal1, String animal2) { int value = animal1.compareTo(animal2); //Elements are sorted in reverse order if (value > 0) { return -1; } else if (value < 0) { return 1; } else { return 0; } } } }
Output result
TreeSet: [Zebra, Horse, Dog, Cat]
In the above example, we create a TreeSet and pass the CustomComparator class as a parameter.
The CustomComparator class implements the Comparator interface.
Then, we rewrite the compare() method. Now, this method will sort the elements in reverse order.