com
6-7 minutes
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
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
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
La bibliothèque Collections Java fournit une classe HashSet qui implémente un Set basé sur une table
de hachage (HashTable).
Constructeur Description
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
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 remove(Object o) Supprimer l'élément spécifié de cet HashSet s'il est présent.
Exemple 1 :
1 import java.util.HashSet;
2 import java.util.Iterator;
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);
pays.remove("Espagne");
15
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
1 import java.util.HashSet;
2 import java.util.Iterator;
3 import java.util.ArrayList;
7 list.add("Maroc");
8 list.add("Tunisie");
9 list.add("Algérie");
11 set.add("France");
13 while (i.hasNext()) {
14 System.out.println(i.next());
15 }
16 }
17 }
18
19
20
Tunisie
Algérie
Maroc
France