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:
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: