English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans ce tutoriel, nous allons étudier la classe HashSet de Java. Nous allons apprendre différentes méthodes et opérations de l'ensemble de hachage à l'aide d'exemples.
La classe HashSet de la framework de Collections Java fournit les fonctionnalités de la structure de table de hachage.
il implémentel'interface Set.
Pour créer un ensemble de hachage, nous devons d'abord importer le paquet java.util.HashSet.
Après avoir importé le paquet, vous pouvez créer un ensemble de hachage en Java.
//avec8une capacité et 0.75un ensemble de hachage avec facteur de charge HashSet<Integer> numbers = new HashSet<>(8, 0.75);
Ici, nous avons créé un ensemble de hachage nommé numbers.
Attention, le nouveau HashSet<>(8, 0.75) ici, le premier paramètre estLa capacité, et le second paramètre estLe facteur de charge.
capacity -La capacité de cet ensemble de hachage est8. Cela signifie qu'il peut stocker8éléments.
loadFactor - Le facteur de charge de cet ensemble de hachage est de 0.6. Cela signifie que tant que notre ensemble de hachage est rempli60 %, les éléments seront déplacés vers un nouveau tableau de hachage, whose size is twice that of the original table de hachage.
Capacité par défaut et facteur de charge
Il est possible de créer une table de hachage sans définir sa capacité et son facteur de charge. Par exemple,
//HashSet avec capacité par défaut et facteur de charge HashSet<Integer> numbers1 new HashSet<>();
Par défaut,
La capacité du ensemble de hash sera 16
Le facteur de charge sera 0.75
La classe HashSet fournit diverses méthodes qui nous permettent d'effectuer diverses opérations sur l'ensemble.
add() - Insérer l'élément spécifié dans l'ensemble
addAll() - Insérer tous les éléments de l'ensemble spécifié dans l'ensemble
Par exemple,
import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> evenNumber = new HashSet<>(); // Utiliser la méthode add() evenNumber.add(2); evenNumber.add(4); evenNumber.add(6); System.out.println("HashSet: ", + evenNumber); HashSet<Integer> numbers = new HashSet<>(); // Utiliser la méthode addAll() numbers.addAll(evenNumber); numbers.add(5); System.out.println("New HashSet: ", + numbers); } }
Output result
HashSet: [2, 4, 6] New HashSet: [2, 4, 5, 6]
Pour accéder aux éléments de l'ensemble de hash, 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.HashSet; import java.util.Iterator; class Main { public static void main(String[] args) { HashSet<Integer> numbers = new HashSet<>(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: ", + numbers); // Appeler la méthode iterator() Iterator<Integer> iterate = numbers.iterator(); System.out.print("Utiliser HashSet avec l'Iterator: ", //Accéder aux éléments while(iterate.hasNext()) { System.out.print(iterate.next()); System.out.print(", "); } } }
Output result
HashSet: [2, 5, 6] Utiliser HashSet avec l'Iterator 2, 5, 6,
remove() - Supprimer l'élément spécifié du conjunto
removeAll() - Supprimer tous les éléments du conjunto
Par exemple,
import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> numbers = new HashSet<>(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: ", + numbers); //Utiliser la méthode remove() boolean valeur1 = numbers.remove(5); System.out.println("Valeur",5Supprimé ? ", + valeur1); boolean valeur2 = numbers.removeAll(numbers); System.out.println("Tous les éléments ont-ils été supprimés ? ", + valeur2); } }
Output result
HashSet: [2, 5, 6] Valeur5Supprimé ? true Tous les éléments ont-ils été supprimés ? true
Les différentes méthodes de la classe HashSet peuvent également être utilisées pour effectuer diverses opérations de set.
union d'un ensemble Set
import java.util.HashSet; class Main { public static void main(String[] args) { Pour effectuer l'intersection entre deux ensembles, nous pouvons utiliser la méthode retainAll(). Par exemple HashSet<Integer> evenNumbers = new HashSet<>();2); HashSet<Integer> evenNumbers = new HashSet<>();4); System.out.println("HashSet1: " + System.out.println("Intersection: ") HashSet<Integer> numbers = new HashSet<>(); numbers.add(1); numbers.add(3); System.out.println("HashSet2: " + numbers); //Pour effectuer l'union entre deux ensembles, nous pouvons utiliser la méthode addAll(). Par exemple union d'ensembles numbers.addAll(evenNumbers); + numbers); } }
Output result
HashSet1: [2, 4] HashSet2: [1, 3] System.out.println("Union est: ")1, 2, 3, 4]
intersection d'un ensemble Set
import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> primeNumbers = new HashSet<>(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("HashSet1: " + primeNumbers); Pour effectuer l'intersection entre deux ensembles, nous pouvons utiliser la méthode retainAll(). Par exemple HashSet<Integer> evenNumbers = new HashSet<>();2); HashSet<Integer> evenNumbers = new HashSet<>();4); System.out.println("HashSet2: " + System.out.println("Intersection: ") //evenNumbers.add( intersection d'un ensemble evenNumbers.retainAll(primeNumbers); + System.out.println("Intersection: ") } }
Output result
HashSet1: [2, 3] HashSet2: [2, 4] Intersection: [2]
Pour calculer la différence entre deux ensembles, nous pouvons utiliser la méthode removeAll(). Par exemple,
import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> primeNumbers = new HashSet<>(); primeNumbers.add(2); primeNumbers.add(3); primeNumbers.add(5); System.out.println("HashSet1: " + primeNumbers); HashSet<Integer> oddNumbers = new HashSet<>(); oddNumbers.add(1); oddNumbers.add(3); oddNumbers.add(5); System.out.println("HashSet2: " + oddNumbers); //HashSet1et HashSet2différence entre deux ensembles primeNumbers.removeAll(oddNumbers); System.out.println("Différence: ") + primeNumbers); } }
Output result
HashSet1: [2, 3, 5] HashSet2: [1, 3, 5] Différence: [2]
Pour vérifier si un ensemble est un sous-ensemble d'un autre ensemble, nous pouvons utiliser la méthode containsAll(). Par exemple,
import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> numbers = new HashSet<>(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); System.out.println("HashSet1: " + numbers); HashSet<Integer> primeNumbers = new HashSet<>(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("HashSet2: " + primeNumbers); //vérifiez si primeNumbers est un sous-ensemble de numbers boolean result = numbers.containsAll(primeNumbers); System.out.println("HashSet2It is a HashSet1c'est un sous-ensemble? " + result); } }
Output result
HashSet1: [1, 2, 3, 4] HashSet2: [2, 3] HashSet2It is a HashSet1Is it a subset? true
Method | Description |
---|---|
clone() | Create a duplicate of HashSet |
contains() | Search for the specified element in HashSet and return a boolean result |
isEmpty() | Check if HashSet is empty |
size() | Return the size of HashSet |
clear() | Remove all elements from HashSet |
In Java, if we must access elements randomly, we usually use HashSet. This is because the elements in the hash table are accessed using hash codes.
The hashcode is a unique identifier that helps identify the elements in the hash table.
HashSet cannot contain duplicate elements. Therefore, each element of the hash set has a unique hashcode.
Note: HashSet is not synchronized. That is to say, if multiple threads access the hash set at the same time and one thread modifies the hash set, then it must be synchronized externally.