logo

Diferencia entre la clase HashSet y HashMap en Java

El HashMap y Conjunto de hash en Java son las clases de Colección más populares. Ambos se utilizan para la estructura de datos. La siguiente tabla describe la diferencia entre HashMap y HashSet:

nodo de lista java
Base HashMap Conjunto de hash
Definición Java HashMap es una implementación basada en tabla hash de la interfaz Map. HashSet es un conjunto. Crea una colección que utiliza una tabla hash para almacenamiento.
Implementación Implementos HashMap Mapa, clonable y serializable interfaz es. Implementos HashSet Conjunto, clonable, serializable, iterable y Recopilación interfaces.
Historias En HashMap almacenamos un par clave-valor . Mantiene el mapeo de clave y valor. En HashSet, almacenamos objetos .
Valores duplicados No permite llaves duplicadas , pero valores duplicados son permitido . No permite valores duplicados .
Valores nulos Puede contener un clave nula única y múltiples valores nulos . puede contener un solo valor nulo .
Método de inserción HashMap utiliza el poner() método para agregar los elementos en el HashMap. HashSet utiliza el agregar() método para agregar elementos en el HashSet.
Actuación HashMap es más rápido/ que HashSet porque los valores están asociados con una clave única. HashSet es Más lento que HashMap porque el objeto miembro se usa para calcular el valor del código hash, que puede ser el mismo para dos objetos.
El número de objetos Solo uno El objeto se crea durante la operación de adición. Hay dos objetos creados durante la operación de venta, uno para llave y uno para valor .
Mecanismo de almacenamiento HashMap utiliza internamente hash para almacenar objetos. HashSet utiliza internamente un HashMap objeto para almacenar objetos.
Usos Preferir siempre cuando no mantenemos el unicidad . Se utiliza cuando necesitamos mantener la unicidad de datos.
Ejemplo {a->4, b->9, c->5} Dónde a B C son llaves y 4, 9, 5 son valores asociado con la clave. {6, 43, 2, 90, 4} Denota un conjunto.

Entendamos las diferencias a través de programas.

Ejemplo de HashMap

En el siguiente ejemplo, cuando agregamos un elemento duplicado con la misma clave y valor diferente, el valor anterior de la clave se reemplaza por el nuevo valor.

Cuando agregamos un elemento duplicado con la misma clave y el mismo valor, el par clave-valor no se almacena por segunda vez.

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

Producción:

Diferencia entre la clase HashSet y HashMap en Java

Ejemplo de HashSet

En el siguiente ejemplo, podemos ver que los valores duplicados no se almacenan en HashSet y el valor nulo se almacena solo una vez.

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

Producción:

Diferencia entre la clase HashSet y HashMap en Java