Vous êtes sur la page 1sur 6

developpement-informatique.

com

HashSet en Java - java.util.HashSet


Developpement-informatique.com

6-7 minutes

HashSet en Java - java.util.HashSet

Les listes et LinketList vous permettent de spécifier l'ordre dans lequel vous souhaitez organiser les

éléments. Toutefois, si vous recherchez un élément en particulier et que vous ne vous souvenez pas de

sa position, vous devez visiter tous les éléments jusqu'à ce que vous trouviez une correspondance.

Cela peut prendre beaucoup de temps si la collection contient de nombreux éléments. Si vous ne vous

souciez pas de l'ordre des éléments, il existe des structures de données qui vous permettent de trouver

les éléments beaucoup plus rapidement.

L'inconvénient est que ces structures de données ne vous permettent pas de contrôler l'ordre dans

lequel les éléments apparaissent. Ces structures de données organisent les éléments dans un ordre

adapté à leurs besoins.

Une structure de données bien connue pour trouver des objets rapidement est la table de hachage

(HashTable). Une table de hachage calcule un entier, appelé le code de hachage pour chaque objet.

Un code de hachage est en quelque sorte dérivé des champs d'instance d'un objet, de préférence de

telle sorte que les objets avec des données différentes génèrent des codes différents.

En Java, les tables de hachage sont implémentées en tant que tableaux de listes chaînées

(LinkedList). Chaque liste s'appelle une alvéole (en anglais, buckets ou slots).

 Remarque !  à partir de Java 8, les slots ne sont plus des listes chaînées, mais deviennent des arbres

binaires équilibrés lorsqu'ils sont pleins. Cela améliore les performances si une fonction de hachage est

mal choisie et génère de nombreuses collisions ou si un code malveillant tente d'inonder une table de

hachage de nombreuses valeurs ayant des codes de hachage identiques

La bibliothèque Collections Java fournit une classe HashSet qui implémente un Set basé sur une table

de hachage (HashTable).

Voici la liste des constructeurs fournis par la classe HashSet.

Constructeur Description

HashSet() Ce constructeur construit un HashSet par défaut.


Constructeur Description

HashSet(Collection Ce constructeur initialise le hash set en utilisant les éléments de la collection


c) c.

Ce constructeur initialise la capacité du hachage défini sur la valeur entière


HashSet(int
donnée. La capacité augmente automatiquement à mesure que des éléments
capacity)
sont ajoutés au HashSet.

Ce constructeur initialise à la fois la capacité et le taux de remplissage (load

capacity) de HashSet à partir de ses arguments.

HashSet(int
Ici, le taux de remplissage doit se situer entre 0,0 et 1,0, et il détermine la
capacity, float
quantité de HashSet avant de le redimensionner vers le haut. Plus
fillRatio)
précisément, lorsque le nombre d'éléments est supérieur à la capacité du

HashSet multipliée par son taux de remplissage, le HashSet est élargi.

Outre les méthodes héritées de ses classes mères, HashSet définit les méthodes suivantes :

Méthode Description

boolean add(Object o) Ajouter l'élément spécifié à HashSet s'il n'est pas déjà présent.

boolean isEmpty() Retourner true si cet HashSet ne contient aucun élément.

Iterator iterator() Retourner un itérateur sur les éléments de cet HashSet.

boolean remove(Object o) Supprimer l'élément spécifié de cet HashSet s'il est présent.

int size() Retourner le nombre d'éléments.

void clear() Supprimer tous les éléments.

boolean contains(Object o) Retourner true si cet HashSet contient l'élément spécifié.

Exemple 1 :

1 import java.util.HashSet;

2 import java.util.Iterator;

3 public class Test {

4     public static void main(String args[]) {

5         HashSet< String> pays = new HashSet< String>();

6         pays.add("Maroc");
7         pays.add("Tunisie");

8         pays.add("Algérie");

9         pays.add("Espagne");

10         pays.add("Malaisie");

11         pays.add("Espagne");

12         System.out.println(pays);

13         System.out.println("Est ce que la tunisie appartient aux pays :" +


pays.contains("Tunisie"));
14

        pays.remove("Espagne");
15

        System.out.println("Liste après avoir retiré l'espagne:" + pays);


16

        System.out.println("Itérer sur pays :");


17

        Iterator< String> it = pays.iterator();


18

        while (it.hasNext())
19

            System.out.println(it.next());
20

    }
21

}
22

23

24

25

26

27

28

29

30

31
32

[Tunisie, Malaisie, Algérie, Maroc, Espagne]

Est ce que la tunisie appartient aux pays :true

Liste après avoir retiré l'espagne :[Tunisie, Malaisie, Algérie, Maroc]

Itérer sur pays :

Tunisie

Malaisie

Algérie

Maroc

Exemple 2 : HashSet à partir d'une autre collection

1 import java.util.HashSet;

2 import java.util.Iterator;

3 import java.util.ArrayList;

4 public class Test {

5     public static void main(String args[]) {

6         ArrayList< String> list = new ArrayList< String>();

7         list.add("Maroc");

8         list.add("Tunisie");

9         list.add("Algérie");

10         HashSet< String> set = new HashSet< String>(list);

11         set.add("France");

12         Iterator< String> i = set.iterator();

13         while (i.hasNext()) {

14             System.out.println(i.next());

15         }

16     }
17 }

18

19

20

Tunisie

Algérie

Maroc

France

Partager ce cours avec tes amis :


The education of the 21st century opens up opportunities to not merely teach, but to coach, mentor,

nurture and inspire.

Vous aimerez peut-être aussi