La classe Java HashSet est utilisée pour créer une collection qui utilise une table de hachage pour le stockage. Il hérite de la classe AbstractSet et implémente l'interface Set.
Les points importants concernant la classe Java HashSet sont :
- HashSet stocke les éléments en utilisant un mécanisme appelé hachage.
- HashSet contient uniquement des éléments uniques.
- HashSet autorise la valeur nulle.
- La classe HashSet n'est pas synchronisée.
- HashSet ne conserve pas l'ordre d'insertion. Ici, les éléments sont insérés sur la base de leur hashcode.
- HashSet est la meilleure approche pour les opérations de recherche.
- La capacité initiale par défaut de HashSet est de 16 et le facteur de charge est de 0,75.
Différence entre liste et ensemble
Une liste peut contenir des éléments en double alors que Set ne contient que des éléments uniques.
Hiérarchie de la classe HashSet
La classe HashSet étend la classe AbstractSet qui implémente l'interface Set. L’interface Set hérite des interfaces Collection et Iterable dans l’ordre hiérarchique.
Déclaration de classe HashSet
Voyons la déclaration de la classe java.util.HashSet.
public class HashSet extends AbstractSet implements Set, Cloneable, Serializable
Constructeurs de la classe Java HashSet
SN | Constructeur | Description |
---|---|---|
1) | HashSet() | Il est utilisé pour construire un HashSet par défaut. |
2) | HashSet (capacité entière) | Il est utilisé pour initialiser la capacité du hachage défini à la capacité de valeur entière donnée. La capacité augmente automatiquement à mesure que des éléments sont ajoutés au HashSet. |
3) | HashSet (capacité int, float loadFactor) | Il est utilisé pour initialiser la capacité de l'ensemble de hachage à la capacité de valeur entière donnée et au facteur de charge spécifié. |
4) | HashSet(Collection c) | Il permet d'initialiser le hash set en utilisant les éléments de la collection c. |
Méthodes de la classe Java HashSet
Les différentes méthodes de la classe Java HashSet sont les suivantes :
SN | Modificateur et type | Méthode | Description |
---|---|---|---|
1) | booléen | ajouter(E e) | Il permet d'ajouter l'élément spécifié à cet ensemble s'il n'est pas déjà présent. |
2) | vide | clair() | Il permet de supprimer tous les éléments de l'ensemble. |
3) | objet | cloner() | Il est utilisé pour renvoyer une copie superficielle de cette instance HashSet : les éléments eux-mêmes ne sont pas clonés. |
4) | booléen | contient (Objet o) | Il est utilisé pour renvoyer true si cet ensemble contient l'élément spécifié. |
5) | booléen | est vide() | Il est utilisé pour renvoyer true si cet ensemble ne contient aucun élément. |
6) | Itérateur | itérateur() | Il est utilisé pour renvoyer un itérateur sur les éléments de cet ensemble. |
7) | booléen | supprimer (Objet o) | Il est utilisé pour supprimer l'élément spécifié de cet ensemble s'il est présent. |
8) | int | taille() | Il est utilisé pour renvoyer le nombre d’éléments dans l’ensemble. |
9) | Séparateur | séparateur() | Il est utilisé pour créer un Spliterator à liaison tardive et à échec rapide sur les éléments de l'ensemble. |
Exemple de jeu de hachage Java
Voyons un exemple simple de HashSet. Remarquez que les éléments itèrent dans une collection non ordonnée.
import java.util.*; class HashSet1{ public static void main(String args[]){ //Creating HashSet and adding elements HashSet set=new HashSet(); set.add('One'); set.add('Two'); set.add('Three'); set.add('Four'); set.add('Five'); Iterator i=set.iterator(); while(i.hasNext()) { System.out.println(i.next()); } } }
Five One Four Two Three
Exemple Java HashSet ignorant les éléments en double
Dans cet exemple, nous voyons que HashSet n'autorise pas les éléments en double.
import java.util.*; class HashSet2{ public static void main(String args[]){ //Creating HashSet and adding elements HashSet set=new HashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //Traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Ajay Vijay Ravi
Exemple Java HashSet pour supprimer des éléments
Ici, nous voyons différentes manières de supprimer un élément.
import java.util.*; class HashSet3{ public static void main(String args[]){ HashSet set=new HashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Arun'); set.add('Sumit'); System.out.println('An initial list of elements: '+set); //Removing specific element from HashSet set.remove('Ravi'); System.out.println('After invoking remove(object) method: '+set); HashSet set1=new HashSet(); set1.add('Ajay'); set1.add('Gaurav'); set.addAll(set1); System.out.println('Updated List: '+set); //Removing all the new elements from HashSet set.removeAll(set1); System.out.println('After invoking removeAll() method: '+set); //Removing elements on the basis of specified condition set.removeIf(str->str.contains('Vijay')); System.out.println('After invoking removeIf() method: '+set); //Removing all the elements available in the set set.clear(); System.out.println('After invoking clear() method: '+set); } }
An initial list of elements: [Vijay, Ravi, Arun, Sumit] After invoking remove(object) method: [Vijay, Arun, Sumit] Updated List: [Vijay, Arun, Gaurav, Sumit, Ajay] After invoking removeAll() method: [Vijay, Arun, Sumit] After invoking removeIf() method: [Arun, Sumit] After invoking clear() method: []
Java HashSet d'une autre collection
import java.util.*; class HashSet4{ public static void main(String args[]){ ArrayList list=new ArrayList(); list.add('Ravi'); list.add('Vijay'); list.add('Ajay'); HashSet set=new HashSet(list); set.add('Gaurav'); Iterator i=set.iterator(); while(i.hasNext()) { System.out.println(i.next()); } } }
Vijay Ravi Gaurav Ajay
Exemple Java HashSet : livre
Voyons un exemple de HashSet dans lequel nous ajoutons des livres pour définir et imprimer tous les livres.
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class HashSetExample { public static void main(String[] args) { HashSet set=new HashSet(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to HashSet set.add(b1); set.add(b2); set.add(b3); //Traversing HashSet for(Book b:set){ System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }
Sortir:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6
Tu pourrais aussi aimer:
Fonctionnement de HashSet en Java