LinkedHashMap y LinkedHashSet en Java

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

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

Amit
null
Vijay
Rahul

La jerarquía de LinkedHashMap y LinkedHashSet
 

LinkedHashMap and 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:

  • LinkedHashMap()
  • LinkedHashMap(int initialCapacity)
  • LinkedHashMap(int initialCapacity, float fillRatio)
  • LinkedHashMap(int initialCapacity, float fillRatio, orden booleano)
  • LinkedHashMap​(Map<? extiende K,​? extiende V> m)

El LinkedHashSet acepta cuatro tipos de constructores:

  • LinkedHashSet()
  • LinkedHashSet (Colección <? extiende E> C)
  • LinkedHashSet(int initialCapacity)
  • LinkedHashSet(int initialCapacity, float Ratio de relleno)
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.

 

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 *