Diferencia entre HashMap y HashSet

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);
    }
}
Producción

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:

  1. Implementación: HashMap implementa la interfaz Map y HashSet implementa la interfaz Set.
  2. 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.
  3. 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)
  4. 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).
  5. 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.
  6. Velocidad: HashSet es más lento que HashMap.
  7. 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

Publicación traducida automáticamente

Artículo escrito por Rajput-Ji y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *