En este artículo discutiremos las diferencias entre las clases HashSet y HashMap.
HashSet vs HashMap
Diferencias:
HashSet | HashMap |
---|---|
La clase HashSet implementa la interfaz Set | La clase HashMap implementa la interfaz Map |
En HashSet almacenamos objetos (elementos o valores) por ejemplo. Si tenemos un HashSet de elementos de cadena, podría representar un conjunto de elementos HashSet: {“Hola”, “Hola”, “Adiós”, “Ejecutar”} | HashMap se utiliza para almacenar pares de clave y valor. En resumen, conserva el mapeo de claves y valores (la clase HashMap es aproximadamente equivalente a Hashtable, excepto que no está sincronizada y permite valores nulos). Así es como podría representar elementos HashMap si tiene una clave entera y un valor de tipo Cadena: por ejemplo. {1 -> “Hola”, 2 -> “Hola”, 3 -> “Adiós”, 4 -> “Ejecutar”} |
HashSet no permite elementos duplicados, lo que significa que los valores duplicados no se pueden almacenar en HashSet. | HashMap no permite claves duplicadas, sin embargo, permite valores duplicados. |
HashSet le permite tener un único valor nulo. | HashMap permite una única clave nula y cualquier número de valores nulos. |
Similitudes:
1) Tanto HashMap como HashSet no están sincronizados, lo que significa que no son adecuados para operaciones unitarias seguras para subprocesos a menos que estén sincronizados explícitamente. Así es como puede sincronizarlos explícitamente:
HashSet:
Set s = Collections.synchronizedSet(new HashSet(...));
HashMap:
Map m = Collections.synchronizedMap(new HashMap(...));
2) Ambas clases no garantizan que el orden de sus elementos permanecerá constante a lo largo del tiempo.
3) Si observa el código fuente de HashSet, puede encontrar que es compatible con un HashMap. Entonces, básicamente usa un HashMap internamente para todas sus operaciones.
4) Ambos proporcionan un rendimiento de tiempo constante para operaciones básicas como agregar, eliminar elementos, etc.
Ejemplo de HashSet
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); } } }
Producción:
HashSet contains: AA BB CC DD
Ejemplo de HashMap
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); } }
Producción:
HashMap contains: {1=AA, 2=BB, 3=CC, 4=DD}