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