HashSet es una implementación de Set Interface que no permite valores duplicados. Lo principal es que los objetos que se almacenan en HashSet deben anular equals() para verificar la igualdad, y los métodos hashCode() para que no haya valores duplicados se almacenan en nuestro conjunto. HashMap es una implementación de Map Interface , que asigna una clave a un valor. No se permiten claves duplicadas en un mapa. Básicamente, Map Interface tiene dos clases de implementación HashMap y TreeMap, la principal diferencia es que TreeMap mantiene un orden de los objetos pero HashMap no lo hará. HashMap permite valores nulos y claves nulas. Tanto HashSet como HashMap no están sincronizados.
Ahora formulemos la diferencia entre HashMap y HashSet como se proporciona en forma tabular a continuación de la siguiente manera:
Básico | HashSet | mapa hash |
---|---|---|
Implementos | Establecer interfaz | Interfaz de mapa |
Duplicados | No | Sí, se permiten valores duplicados, pero no se permiten claves duplicadas. |
valores ficticios | Sí | No |
Objetos necesarios durante una operación de adición | 1 | 2 |
Agregar y almacenar mecanismo | objeto HashMap | técnica de hash |
Velocidad | Es comparativamente más lento que HashMap | Es comparativamente más rápido que HashSet debido a que aquí se ha utilizado la técnica hash. |
Nulo | Tener un solo valor nulo | Clave única nula y cualquier número de valores nulos |
Método de inserción | Agregar() | Poner() |
Comprendamos la comprensión echando un vistazo al funcionamiento interno con la ayuda de programas java limpios.
Ejemplo 1: HashSet
JAVA
// Java program to demonstrate working of HashSet // Importing HashSet class from java.util package import java.util.HashSet; // Mai class public class GFG { // Main driver method public static void main(String[] args) { HashSet<String> hs = new HashSet<String>(); // Adding elements to the HashSet hs.add("geeks"); hs.add("practice"); hs.add("contribute"); ; System.out.println( "Before adding duplicate values \n\n" + hs); // Addition of duplicate elements hs.add("geeks"); hs.add("practice"); System.out.println( "\nAfter adding duplicate values \n\n" + hs); // Addition of null values hs.add(null); hs.add(null); // Displaying HashSet elements System.out.println("\nAfter adding null values \n\n" + hs); } }
Before adding duplicate values [practice, geeks, contribute] After adding duplicate values [practice, geeks, contribute] After adding null values [null, practice, geeks, contribute]
Ejemplo 2: HashMap
JAVA
import java.util.HashMap; public class HashMapExample { public static void main(String[] args) { // This is how to declare HashMap HashMap<Integer, String> hm = new HashMap<Integer, String>(); // Adding elements to HashMap*/ hm.put(12, "geeks"); hm.put(2, "practice"); hm.put(7, "contribute"); System.out.println("\nHashMap object output :\n\n" + hm); // store data with duplicate key hm.put(7, "geeks"); hm.put(12, "contribute"); System.out.println("\nAfter inserting duplicate key :\n\n" + hm); } }
Producción:
HashMap object output : {2=practice, 7=contribute, 12=geeks} After inserting duplicate key : {2=practice, 7=geeks, 12=contribute}
De los dos resultados anteriores después de comprender su funcionamiento interno, ahora podemos hablar sobre las diferencias conceptuales que son las siguientes:
- Implementación: HashMap implementa la interfaz Map y HashSet implementa la interfaz Set.
- Duplicados: HashSet no permite valores duplicados. HashMap almacena pares de claves y valores y no permite claves duplicadas. Si la clave está duplicada, la clave anterior se reemplaza con el nuevo valor.
- Número de objetos durante el almacenamiento de objetos: HashMap requiere dos objetos colocados (tecla K, valor V) para agregar un elemento al objeto HashMap, mientras que HashSet requiere solo un objeto agregado (Objeto o)
- Valor ficticio: en HashMap no hay concepto de valor ficticio,
HashSet usa internamente HashMap para agregar elementos. En HashSet, el argumento pasado en el método add(Object) sirve como clave K. Java asocia internamente un valor ficticio para cada valor pasado en el método add(Object). - Mecanismo de almacenamiento o adición: HashMap usa hash internamente para almacenar o agregar objetos, HashSet usa internamente el objeto HashMap para almacenar o agregar objetos.
- Velocidad: HashSet es más lento que HashMap.
- Insertion HashMap usa el método put() para almacenar datos, mientras que en HashSet usa el método add() para agregar o almacenar datos.
Terminemos con un ejemplo
HashSet is a set, e.g. {1, 2, 3, 4, 5, 6, 7}, HashMap is a key -> value pair(key to value) map, e.g. {a -> 1, b -> 2, c -> 2, d -> 1}
Aquí, en el ejemplo del HashMap no debe haber claves duplicadas, pero puede tener valores duplicados. En el HashSet, no debe haber elementos duplicados