Diferencia entre HashSet y HashMap

En este artículo vamos a discutir 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) e.g. Si tenemos un HashSet de elementos de cadena entonces podría representar un conjunto de elementos HashSet: {«Hello», «Hi», «Bye», «Run»} HashMap se utiliza para almacenar pares de claves &valores. En resumen, mantiene el mapeo de clave & valor (La clase HashMap es aproximadamente equivalente a Hashtable, excepto que no está sincronizada y permite nulos). Así es como se podrían representar los elementos de HashMap si tiene clave entera y valor de tipo String: por ejemplo {1->»Hola», 2->»Hi», 3->»Bye», 4->»Run»}
HashSet no permite elementos duplicados lo que significa que no se pueden almacenar valores duplicados en HashSet. HashMap no permite claves duplicadas sin embargo permite tener valores duplicados.
HashSet 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 a prueba de hilos unitl a menos que se sincronicen explícitamente. Así es como se pueden sincronizar 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 se mantenga constante a lo largo del tiempo.

3) Si miras el código fuente de HashSet entonces puedes encontrar que está respaldado por un HashMap. Así que básicamente utiliza internamente un HashMap para todas sus operaciones.

4) Ambos proporcionan un rendimiento en tiempo constante para operaciones básicas como añadir, 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); } }}

Salida:

HashSet contains: AABBCCDD

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

Salida:

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

Leave a Reply