LinkedHashMap es como HashMap con una característica adicional de mantener un orden de elementos insertados en él. HashMap proporcionó la ventaja de una inserción, búsqueda y eliminación rápidas, pero nunca mantuvo el seguimiento y el orden de inserción que proporciona LinkedHashMap donde se puede acceder a los elementos en su orden de inserción.
Ejemplo:
Java
// Java program to demonstrate // working of LinkedHashMap import java.util.*; class LinkedHashMapExample { public static void main(String args[]) { // create an instance of LinkedHashMap LinkedHashMap<Integer, String> lhm; lhm = new LinkedHashMap<Integer, String>(); // insert element in LinkedHashMap lhm.put(100, "Amit"); // insert first null key lhm.put(null, "Ajay"); lhm.put(101, "Vijay"); lhm.put(102, "Rahul"); // insert second null key // which replace first null key value lhm.put(null, "Anuj"); // insert duplicate // which replace first 102 key value lhm.put(102, "Saurav"); // iterate and print the key/value pairs lhm.entrySet().stream().forEach((m) -> { System.out.println(m.getKey() + " " + m.getValue()); }); } }
100 Amit null Anuj 101 Vijay 102 Saurav
LinkedHashSet es una versión ordenada de HashSet que mantiene una lista doblemente vinculada en todos los elementos. Cuando se necesita mantener el orden de iteración, se utiliza esta clase. Al iterar a través de un HashSet, el orden es impredecible, mientras que un LinkedHashSet nos permite iterar a través de los elementos en el orden en que se insertaron. Al recorrer LinkedHashSet con un iterador, los elementos se devolverán en el orden en que se insertaron.
Ejemplo:
Java
// Java program to demonstrate // working of LinkedHashSet import java.util.*; class LinkedHashSetExample { public static void main(String args[]) { // create an instance of LinkedHashSet LinkedHashSet<String> lhs = new LinkedHashSet<String>(); // insert element in LinkedHashMap lhs.add("Amit"); // insert first null key lhs.add(null); lhs.add("Vijay"); lhs.add("Rahul"); // insert second null key // which replace first null key value lhs.add(null); // insert duplicate lhs.add("Vijay"); // create an iterator // iterate and print the elements Iterator<String> itr = lhs.iterator(); while (itr.hasNext()) { System.out.println(itr.next()); } } }
Amit null Vijay Rahul
La jerarquía de LinkedHashMap y LinkedHashSet
Similitudes entre LinkedHashMap y LinkedHashSet
Propiedad |
LinkedHashMap y LinkedHashSet |
---|---|
Ordenar | Tanto LinkedHashMap como LinkedHashSet mantienen el orden de inserción. Los elementos se ordenan en la misma secuencia en la que se agregaron. |
sincronizado | Ambos no están sincronizados y deben sincronizarse externamente. |
Duplicados | LinkedHashMap hace una asignación de claves a valores para que no tenga duplicados y LinkedHashSet simplemente almacena una colección de cosas sin duplicados. |
Memoria | Mantener el orden de inserción tanto en LinkedHashmap como en LinkedHashset tiene costos asociados adicionales, tanto en términos de gasto de ciclos de CPU adicionales como de necesidad de más memoria. |
Diferencias entre LinkedHashMap y LinkedHashSet
Propiedad |
LinkedHashMap |
LinkedHashSet |
---|---|---|
Declaración |
La declaración del constructor por defecto es: LinkedHashMap lhm = nuevo LinkedHashMap(); |
La declaración del constructor por defecto es: LinkedHashSet hs = nuevo LinkedHashSet(); |
Declaración de clase | clase pública LinkedHashMap<K, V> extiende HashMap<K, V> implementa Map<K, V> | clase pública LinkedHashSet<E> extiende HashSet<E> implementa Set<E>, Cloneable, Serializable |
Constructor |
LinkedHashMap acepta cinco tipos de constructores:
|
El LinkedHashSet acepta cuatro tipos de constructores:
|
Operación | LinkedHashMap hace un mapeo de claves a valores. | LinkedHashSet simplemente almacena una colección de cosas. |
Reemplazo | LinkedHashMap reemplaza el valor con una clave duplicada. | LinkedHashSet no cambia el valor original. |
Objeto nulo | LinkedHashMap tiene elementos en pares clave-valor, por lo que solo tiene una clave nula y varios valores nulos. | LinkedHashSet simplemente almacena una colección de cosas con un valor nulo. |