Dominando Java LinkedHashMap: Creación, Operaciones y Comparación de Rendimiento
Dominando Java LinkedHashMap: Creación, Operaciones y Comparación de Rendimiento
Descubre cómo crear, manipular y comparar LinkedHashMap de Java con ejemplos reales y mejores prácticas.
La clase LinkedHashMap en el framework de colecciones de Java combina búsquedas rápidas de tabla hash con orden de iteración predecible, gracias a una lista doblemente enlazada interna que preserva el orden de inserción o acceso.
Creando un LinkedHashMap
Para usar un LinkedHashMap, importa java.util.LinkedHashMap e instáncialo. El constructor acepta capacidad inicial, factor de carga y una bandera opcional accessOrder.
// LinkedHashMap con capacidad inicial 8 y factor de carga 0.6
LinkedHashMap<Clave, Valor> numeros = new LinkedHashMap<>(8, 0.6f);
Parámetros:
- capacidad – número de buckets; por defecto 16.
- factorDeCarga – dispara redimensionado cuando la tabla está al 60% llena; por defecto 0.75.
- accessOrder –
falsepara orden de inserción,truepara orden de acceso (menos reciente a más reciente).
Ejemplo con configuración por defecto:
LinkedHashMap<Clave, Valor> mapaPorDefecto = new LinkedHashMap<>();
Creando un LinkedHashMap desde Mapas Existentes
Copia un mapa existente en un LinkedHashMap para preservar el orden:
LinkedHashMap<String, Integer> numerosPares = new LinkedHashMap<>();
numerosPares.put("Dos", 2);
numerosPares.put("Cuatro", 4);
LinkedHashMap<String, Integer> numeros = new LinkedHashMap<>(numerosPares);
numeros.put("Tres", 3);
Salida:
LinkedHashMap1: {Dos=2, Cuatro=4} LinkedHashMap2: {Dos=2, Cuatro=4, Tres=3}
Operaciones Clave
Insertar Elementos
put(clave, valor)– añade o reemplaza un mapeo.putIfAbsent(clave, valor)– añade solo si la clave falta.putAll(mapa)– fusiona otro mapa.
LinkedHashMap<String, Integer> numeros = new LinkedHashMap<>();
numeros.put("Uno", 1);
numeros.putIfAbsent("Dos", 2);
numeros.putAll(numerosPares);
Acceder a Elementos
Recupera claves, valores o entradas:
entrySet()– todos los pares clave/valor.keySet()– todas las claves.values()– todos los valores.get(clave)– valor onullsi falta.getOrDefault(clave, default)– recuperación segura con fallback.
int val = numeros.get("Tres");
int def = numeros.getOrDefault("Cinco", 5);
Eliminar Elementos
remove(clave)– elimina por clave.remove(clave, valor)– elimina solo si el valor coincide.clear()– limpia el mapa.containsKey(clave)– verificación de existencia.containsValue(valor)– verificación de existencia.size()– número de entradas.isEmpty()– verificación de vaciado.
LinkedHashMap vs. HashMap
- LinkedHashMap preserva orden de inserción o acceso; HashMap no.
- LinkedHashMap usa memoria extra para enlaces de nodos.
- La iteración de LinkedHashMap es ligeramente más lenta pero ofrece orden predecible.
Java
- Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
- Comentarios en Java: Tipos, Uso y Mejores Prácticas
- Dominar if…else en Java: Control de Flujo Explicado
- Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
- Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
- Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
- Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
- Dominando Try‑with‑Resources en Java: Gestión automática de recursos explicada
- Anotaciones en Java explicadas: Tipos, ubicación y ejemplos prácticos
- Aserciones en Java: Guía práctica para detectar bugs y asegurar fiabilidad del código
- Entendiendo Java Vector: Uso, Características y Comparación con ArrayList