Différence entre HashSet et HashMap

Dans cet article, nous allons discuter des différences entre les classes HashSet et HashMap.

HashSet vs HashMap

Différences :

HashSet HashMap
La classe HashSet implémente l’interface Set La classe HashMap implémente l’interface Map
Dans HashSet nous stockons des objets(éléments ou valeurs) e.g. Si nous avons un HashSet d’éléments de chaînes de caractères, alors il pourrait représenter un ensemble d’éléments HashSet : {« Hello », « Hi », « Bye », « Run »} HashMap est utilisé pour stocker des paires clé &valeur. En bref, il maintient le mappage de la clé & valeur (La classe HashMap est à peu près équivalente à Hashtable, sauf qu’elle est non synchronisée et qu’elle autorise les nuls). Voici comment vous pourriez représenter les éléments de HashMap s’il a une clé entière et une valeur de type String : par ex. {1-> »Hello », 2-> »Salut », 3-> »Bye », 4-> »Run »}
HashSet ne permet pas de dupliquer les éléments ce qui signifie que vous ne pouvez pas stocker des valeurs dupliquées dans HashSet. HashMap ne permet pas de dupliquer les clés cependant il permet d’avoir des valeurs dupliquées.
HashSet permet d’avoir une seule valeur nulle. HashMap permet une seule clé nulle et un nombre quelconque de valeurs nulles.

Similitudes:
1) HashMap et HashSet ne sont pas synchronisés ce qui signifie qu’ils ne conviennent pas aux opérations thread-safe unitl à moins d’être synchronisés explicitement. Voici comment vous pouvez les synchroniser explicitement:
HashSet:

Set s = Collections.synchronizedSet(new HashSet(...));

HashMap:

 Map m = Collections.synchronizedMap(new HashMap(...));

2) Ces deux classes ne garantissent pas que l’ordre de leurs éléments restera constant dans le temps.

3) Si vous regardez le code source de HashSet alors vous pouvez trouver qu’il est soutenu par un HashMap. Donc, fondamentalement, il utilise en interne un HashMap pour toutes ses opérations.

4) Ils fournissent tous deux des performances en temps constant pour les opérations de base telles que l’ajout, la suppression d’élément, etc.

HashSet exemple

import java.util.HashSet;class HashSetDemo{ public static void main(String args) { // Create a HashSet HashSet<String> hset = new HashSet<String>(); //add elements to HashSet hset.add("AA"); hset.add("BB"); hset.add("CC"); hset.add("DD"); // Displaying HashSet elements System.out.println("HashSet contains: "); for(String temp : hset){ System.out.println(temp); } }}

Sortie:

HashSet contains: AABBCCDD

HashMap exemple

import java.util.HashMap;class HashMapDemo{ public static void main(String args) { // Create a HashMap HashMap<Integer, String> hmap = new HashMap<Integer, String>(); //add elements to HashMap hmap.put(1, "AA"); hmap.put(2, "BB"); hmap.put(3, "CC"); hmap.put(4, "DD"); // Displaying HashMap elements System.out.println("HashMap contains: "+hmap); }}

Sortie:

HashMap contains: {1=AA, 2=BB, 3=CC, 4=DD}

.

Leave a Reply