¿Qué es LinkedHashMap en Java?
La clase LinkedHashMap del marco de Colecciones es la implementación Hashtable y LinkedList de la interfaz Map . Almacena sus entradas en una Hashtable y utiliza una lista doblemente enlazada internamente para mantener el orden de inserción. Esta LinkedList define el orden de inserción, que es el orden en que se insertaron las claves en el Mapa . HashMap proporcionó el beneficio de una inserción , búsqueda y eliminación rápidas , pero en LinkedHashMap la implementación de LinkedList también mantiene el orden de inserción .
Características de LinkedHashMap
- Contiene valores basados en la clave.
- Contiene elementos únicos.
- Puede tener una clave nula y varios valores nulos.
- No está sincronizado.
- Mantiene el orden de inserción lo que hace que la iteración sea más cara.
Factores de rendimiento
El rendimiento de LinkedHashMap depende principalmente de dos factores que se describen a continuación.Capacidad
La capacidad significa la cantidad de entradas que puede almacenar. La capacidad predeterminada es 16 si no se proporciona ningún parámetro. Factor de carga El factor de carga significa que cada vez que el HashMap se completa con un porcentaje específico proporcionado como parámetro, se crea un nuevo HashMap que tiene el doble de tamaño y todas las entradas se mueven a este nuevo. El factor de carga predeterminado para un HashMap es 0,75 . También se le conoce como proporción de llenado .Declaración de LinkedHashMap
Para crear un LinkedHashMap , primero debemos importar el paquete, que es java.util.LinkedHashMap .LinkedHashMap<Key, Value> lhm = new LinkedHashMap<>(12, 0.5f);
Aquí, Clave es el tipo de claves en el mapa. El valor es el tipo de valores asignados en el mapa. 12 es la capacidad, lo que significa que almacenará 12 entradas en el mapa. 0.5f es el factor de carga, lo que significa que cuando se completa el 50%, se creará un nuevo mapa y se moverán todos los valores a este nuevo.
Métodos comunes de LinkedHashMap
Aquí hay una lista de algunos métodos comunes de LinkedHashMap .Métodos | Descripción |
---|---|
claro() | Elimina todas las asignaciones en el mapa. |
contieneValor(Valor del objeto) | Devuelve verdadero si el mapa asigna la clave al valor especificado. |
conjunto de entrada() | Devuelve la vista Establecer de las asignaciones en el mapa. |
obtener (clave de objeto) | Devuelve el valor de la clave especificada o nulo si no se especifica ninguna clave. |
juego de llaves() | Devuelve la vista Establecer de las claves en el mapa. |
valores() | Devuelve la vista Colección de los valores en el mapa. |
getOrDefault(Clave de objeto, V valor predeterminado) | Devuelve el valor al que está asociada la clave especificada o defaultValue si no hay ninguna clave asociada. |
Ejemplo de LinkedHasMap
import java.util.LinkedHashMap;
class Main {
public static void main(String[] args) {
// Creating a LinkedHashMap of odd numbers
LinkedHashMap<String, Integer> oddNumbers = new LinkedHashMap<>();
// Using the put() method
oddNumbers.put("One", 1);
oddNumbers.put("Three", 3);
System.out.println("LinkedHashMap1: " + oddNumbers);
// Creating another LinkedHashMap
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("Two", 2);
// Using putAll() method
numbers.putAll(oddNumbers);
System.out.println("LinkedHashMap2: " + numbers);
// Using entrySet() method
System.out.println("Key/Value mappings: " + numbers.entrySet());
// Using keySet() method
System.out.println("Keys: " + numbers.keySet());
// Using values() method
System.out.println("Values: " + numbers.values());
// Using get() method
int value1 = numbers.get("Three");
System.out.println("Returned Number: " + value1);
// Using getOrDefault() method
int value2 = numbers.getOrDefault("Five", 5);
System.out.println("Returned Number: " + value2);
// Using remove() method
int value = numbers.remove("Two");
System.out.println("Removed value: " + value);
// Using entrySet() method
System.out.println("Key/Value mappings: " + numbers.entrySet());
}
}
Producción
LinkedHashMap1: {Uno=1, Tres=3} LinkedHashMap2: {Dos=2, Uno=1, Tres=3} Asignaciones de clave/valor: [Dos=2, Uno=1, Tres=3] Claves: [Dos, uno , Tres] Valores: [2, 1, 3] Número devuelto: 3 Número devuelto: 5 Valor eliminado: 2 Asignaciones de clave/valor: [Uno=1, Tres=3]
LinkedHashMap y HashMap
Veamos algunas diferencias entre ellos, ya que ambos implementan la interfaz Map .- LinkedHashMap mantiene el orden de inserción mientras implementa la lista doblemente enlazada internamente.
- LinkedHashMap necesita más almacenamiento ya que implementa LinkedList .
- En cuanto al rendimiento, LinkedHashMap es más lento que HashMap .
GO TO FULL VERSION