Differenza tra HashSet e HashMap

In questo articolo discuteremo le differenze tra le classi HashSet e HashMap.

HashSet vs HashMap

Differenze:

HashSet HashMap
La classe HashSet implementa l’interfaccia Set La classe HashMap implementa l’interfaccia Map
In HashSet memorizziamo oggetti (elementi o valori) e.g. Se abbiamo un HashSet di elementi stringa allora potrebbe rappresentare un insieme di elementi HashSet: {“Hello”, “Hi”, “Bye”, “Run”} HashMap è usato per memorizzare coppie chiave & valore. In breve, mantiene la mappatura di chiave & valore (La classe HashMap è approssimativamente equivalente a Hashtable, eccetto che non è sincronizzata e permette i null). Ecco come potreste rappresentare gli elementi di HashMap se ha chiave intera e valore di tipo String: ad es. {1->”Hello”, 2->”Hi”, 3->”Bye”, 4->”Run”}
HashSet non permette elementi duplicati, cioè non puoi memorizzare valori duplicati in HashSet. HashMap non permette chiavi duplicate ma permette di avere valori duplicati.
HashSet permette di avere un singolo valore nullo. HashMap permette una singola chiave nulla e qualsiasi numero di valori nulli.

Similitudini:
1) Sia HashMap che HashSet non sono sincronizzati il che significa che non sono adatti per operazioni thread-safe unitl a meno che non siano sincronizzati esplicitamente. Ecco come puoi sincronizzarle esplicitamente:
HashSet:

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

HashMap:

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

2) Entrambe queste classi non garantiscono che l’ordine dei loro elementi rimanga costante nel tempo.

3) Se guardi il codice sorgente di HashSet allora potresti scoprire che è supportato da una HashMap. Quindi fondamentalmente usa internamente una HashMap per tutte le sue operazioni.

4) Entrambi forniscono prestazioni a tempo costante per operazioni di base come aggiungere, rimuovere elementi ecc.

HashSet esempio

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); } }}

Output:

HashSet contains: AABBCCDD

HashMap esempio

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); }}

Output:

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

Leave a Reply