Différence entre HashSet et HashMap
HashMap et HashSet font partie du framework Collection, ce qui nous permet de travailler avec une collection d’objets. Le framework Collection a ses propres interfaces et classes d’implémentation. En générale, une collection est divisée en interfaces Set, List et Queue. Toutes ces interfaces ont également leur propre propriété, sauf qu’elles proviennent d’une collection telle que Set permet la collecte d’objets, mais n’autorise pas les doublons, List permet la duplication en même temps que l’indexation.
Table de comparaison
HashSet | HashMap | |
---|---|---|
Implémentation | HashSet implémente l’interface Set | HashMap implémente l’interface Map |
Stockage | Stocke des valeurs simples | Stocke des données dans des paires clé/valeur |
Objet | La méthode d’ajout est add() | La méthode d’ajout est put() |
Duplication | Les valeurs en double ne sont pas acceptées (uniquement les valeurs uniques) | Les clés en double ne sont pas acceptées (uniquement les clés uniques), mais permet les valeurs en double. |
Synchronisation | La version synchronisée peut être obtenue à l’aide de Collections.synchronizedSet() |
La version synchronisée peut être obtenue à l’aide de Collections.synchronizedMap() |
Exemple de HashSet en Java
import java.util.*; public class HashSetExemple { public static void main(String args[]) { //déclaration d'un objet HashSet Set<String> hashset = new HashSet<String>(); //insertion d'éléments hashset.add("item1"); hashset.add("item2"); hashset.add("item3"); hashset.add(null); //itération un par un Iterator i = hashset.iterator(); while(i.hasNext()) { System.out.println(i.next()); } } }
La sortie
[item2, item1, item3]
Exemple de HashMap en Java
import java.util.*; public class HashMapExemple { public static void main(String args[]) { //Création de HashMap HashMap<Integer, String> hashmap = new HashMap<Integer, String>(); hashmap.put(1, "Item1"); hashmap.put(2, "Item2"); hashmap.put(3, "Item3"); for(Map.Entry m : hashmap.entrySet()) { System.out.println(m.getKey()+" "+m.getValue()); } } }
La sortie
[1 = Item2, 2 = Item1, 3 = Item3]
Les points communs entre HashSet et HashMap
- HashMap et HashSet ne sont pas synchronisés, ce qui signifie qu’ils ne conviennent pas aux opérations thread-safe jusqu’à ce qu’ils soit synchronisés explicitement.
- Ces deux classes ne garantissent pas que l’ordre de leurs éléments restera constant dans le temps.
- Les deux offrent des performances constantes dans le temps pour les opérations de base telles que l’ajout, la suppression d’éléments, etc.