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