Diferencia entre HashMap y LinkedHashMap en Java

Autor: Laura McKinney
Fecha De Creación: 2 Abril 2021
Fecha De Actualización: 10 Mayo 2024
Anonim
Difference between HashMap, LinkedHashMap and TreeMap | Java Tutorial for beginners | Core Java
Video: Difference between HashMap, LinkedHashMap and TreeMap | Java Tutorial for beginners | Core Java

Contenido


HashMap y LinkedHashMap son las clases, bastante similares entre sí y se utilizan para crear un mapa. La clase HashMap extiende la clase AbstractMap para usar una tabla hash para almacenar los elementos en el mapa. La clase LinkedHashMap mantiene las entradas en el mapa en función de su orden de inserción. La característica que distingue a HashMap y LinkedHashMap entre sí es que Hashmap no mantiene el orden de las entradas almacenadas en un mapa. Por otra parte, LinkedHashMap utiliza una estructura de datos híbrida para mantener el orden de las entradas en las que se insertaron. En el cuadro de comparación a continuación exploré algunas otras diferencias entre HashMap y LinkedHashMap solo eche un vistazo.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

Bases para la comparaciónHashMapLinkedHashMap
BASICEl orden de inserción en HashMap no se conserva.El orden de inserción se conserva en LinkedHashMap.
Estructura de datosHashMap usa HashTable para almacenar mapas.LinkedHashMap usa HashTable junto con Linked List para almacenar el mapa.
Extiende / ImplementaHashMap extiende AbstractMap e implementa la interfaz Map.LinkedHashMap extiende Hashmap.
VersiónHashMap se introdujo en JDK 2.0.LinkedHashMap se introdujo en JDK 4.0.
Gastos generalesComparativamente menos gastos generales.Comparativamente más sobrecarga porque tiene que mantener el orden de las entradas del mapa.


Definición de HashMap

HashMap es una clase que se usa para crear un mapa. Implementa Mapa Interfaz. También extiende el ResumenMapa clase para que pueda usar una tabla hash para almacenar las entradas en el mapa. Las entradas del mapa son un par donde cada clave está asociada con el valor. La clave en la entrada se usa para recuperar el valor, por lo tanto, la clave debe ser única. Es por eso que las claves duplicadas no están permitidas en el HashMap. Pero la clave en cada entrada del mapa puede tener un tipo diferente, es decir, las claves en el mapa creado por HashMap pueden ser heterogéneas. La estructura de datos utilizada por HashMap para almacenar un mapa es una tabla hash.

El orden de inserción de las entradas en HashMap no se conserva. La inserción de entradas en el mapa creado usando HashMap se basa en el código hash calculado por las claves en las entradas. Si por error ingresó una clave duplicada en el HashMap, reemplazará el valor anterior de esa clave con el nuevo valor propuesto y devolverá el valor anterior. Si no se utiliza una clave duplicada y no se ha realizado ningún reemplazo, la clave siempre devuelve Null. Veamos cómo agregar las entradas al mapa hash con el siguiente ejemplo.


Hashmap hm = nuevo Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * salida * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200}

Como en el código anterior, puede ver que creé un objeto de HashMap y agregué las entradas usando el método put y cuando edité el objeto HashMap, las entradas no se editan en el orden en que se insertaron. Por lo tanto, no puede fingir que volverá el orden de las entradas en HashMap. HashMap usa todos los métodos de la interfaz Map y la clase AbstractMap y no introduce ningún método nuevo; Tiene sus propios constructores. La capacidad predeterminada del mapa hash es 16 y la relación de llenado predeterminada es 0.75.

Definición de LinkedHashMap

LinkedHashMap también es un uso de clase para crear un mapa. LinkedHashMap extiende el HashMap clase y fue presentado más tarde a HashMap en JDK versión 4.0. Ser la clase hija de la clase HashMap LinkedHashMap es exactamente igual a la clase HashMap, incluidos los constructores y los métodos. Pero LinkedHashMap difiere en un sentido de que mantiene el orden de inserción de las entradas en el mapa. La estructura de datos que utiliza LinkedHashMap para almacenar el mapa es lista enlazada y tabla de picadillo.

Además de los métodos heredados por HashMap, LinkedHashMap presenta un nuevo método que es removeEldestEntry (). Este método se usa para eliminar la entrada más antigua del mapa. La capacidad predeterminada de LinkedHashMap es 16, y la proporción de relleno predeterminada es 0.75, que también es similar a la clase HashMap.

  1. La diferencia más importante es que el orden de inserción de HashMap es no conservado mientras que el orden de inserción de LinkedHashMap es Preservado.
  2. La estructura de datos utilizada por HashMap para almacenar los elementos del mapa es Tabla de picadillo. Por otro lado, la estructura de datos utilizada por LinkedHashMap es Lista enlazada y Tabla de picadillo.
  3. La clase HashMap se extiende ResumenMapa clase e implementa el Mapa interfaz. Sin embargo, la clase LinkedHashMap es una clase secundaria de HashMap clase, es decir, la clase LinkedHashMap extiende la clase HashMap.
  4. La clase HashMap se introdujo en el JDK 2.0 versión. La clase LinkedHashMap se introdujo más tarde en JDK 4.0 versión.
  5. Comparativamente, la clase LinkedHashMap tiene más sobrecarga que HashMap ya que tiene que mantener el orden de los elementos insertados en el mapa.

Conclusión:

LinkedHashMap solo debe usarse cuando nos preocupa la secuencia de los elementos insertados en el mapa.