logo

Diferència entre la classe HashSet i HashMap a Java

El HashMap i HashSet en Java són les classes de Col·lecció més populars. Tots dos s'utilitzen per a l'estructura de dades. La taula següent descriu la diferència entre HashMap i HashSet:

dijkstra
Base HashMap HashSet
Definició Java HashMap és una implementació basada en taules hash de la interfície Map. HashSet és un conjunt. Crea una col·lecció que utilitza una taula hash per a l'emmagatzematge.
Implementació Implements HashMap Mapa, clonable i serialitzable interfície es. Implements HashSet Conjunt, clonable, serialitzable, iterable i Col · lecció interfícies.
Botigues A HashMap emmagatzemem a parella clau-valor . Manté el mapatge de clau i valor. A HashSet, emmagatzemem objectes .
Valors duplicats No permet claus duplicades , però valors duplicats són permès . No permet valors duplicats .
Valors nuls Pot contenir a clau nul·la única i múltiples valors nuls . Pot contenir un sol valor nul .
Mètode d'inserció HashMap utilitza el posar() mètode per afegir els elements al HashMap. HashSet utilitza el afegir() mètode per afegir elements al HashSet.
Rendiment HashMap és més ràpid/ que HashSet perquè els valors estan associats amb una clau única. HashSet és més lent que HashMap perquè l'objecte membre s'utilitza per calcular el valor del codi hash, que pot ser el mateix per a dos objectes.
El nombre d'objectes Només un l'objecte es crea durant l'operació d'addició. N'hi ha dos objectes creats durant l'operació put, un per clau i un per valor .
Mecanisme d'emmagatzematge HashMap utilitza internament hashing per emmagatzemar objectes. HashSet utilitza internament a HashMap objecte per emmagatzemar objectes.
Usos Sempre preferim quan no mantenim el singularitat . S'utilitza quan necessitem mantenir el singularitat de dades.
Exemple {a->4, b->9, c->5} On a, b, c són claus i 4, 9, 5 són valors associada a la clau. {6, 43, 2, 90, 4} Denota un conjunt.

Entenem les diferències a través dels programes.

Exemple de HashMap

En l'exemple següent, quan afegim un element duplicat amb la mateixa clau i un valor diferent, el valor anterior de la clau se substitueix pel valor nou.

Quan afegim un element duplicat amb la mateixa clau i el mateix valor, la parella clau-valor no s'emmagatzema per segona vegada.

 import java.util.*; public class HashMapExample { public static void main(String args[]) { //creating object of HashMap HashMap hm= new HashMap(); //adding key-value pair hm.put('John', 23); hm.put('Monty', 27 ); hm.put('Richard', 21); hm.put('Devid', 19); System.out.println('Before adding duplicate keys: '); System.out.println(hm); //adding duplicate keys hm.put('Monty', 25); //replace the Monty's previous age hm.put('Devid', 19); System.out.println('After adding duplicate keys: '); System.out.println(hm); } } 

Sortida:

Diferència entre la classe HashSet i HashMap a Java

Exemple de HashSet

A l'exemple següent, podem veure que els valors duplicats no s'emmagatzemen al HashSet i el valor nul només s'emmagatzema una vegada.

 import java.util.*; public class HashSetExample { public static void main(String args[]) { //creating object of HashSet HashSet hs= new HashSet(); //adding values to HashSet hs.add('Java'); hs.add('Python'); hs.add('C++'); hs.add('C'); System.out.println('Before adding duplicate and null values: '); System.out.println(hs); //adding duplicate values hs.add('Python'); hs.add('C'); System.out.println('After adding duplicate values: '); System.out.println(hs); //adding null values hs.add(null); hs.add(null); System.out.println('After adding null values: '); System.out.println(hs); } } 

Sortida:

Diferència entre la classe HashSet i HashMap a Java