LinkedHashSet en Java con ejemplos

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.

La jerarquía de LinkedHashSet es la siguiente:

LinkedHashSet in Java with Examples

Parámetros: el tipo de elementos que mantiene este conjunto

All Implemented Interfaces are as listed below:
Serializable
Cloneable,
Iterable<E>
Collection<E>
Set<E>

Sintaxis: Declaración 

public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, Serializable
  • Contiene elementos únicos solo como HashSet. Extiende la clase HashSet e implementa la interfaz Set.
  • Mantiene el orden de inserción.

Constructores de la clase LinkedHashSet

1. LinkedHashSet(): este constructor se usa para crear un HashSet predeterminado

LinkedHashSet<E> hs = new LinkedHashSet<E>();

2. LinkedHashSet (Colección C): se utiliza para inicializar el HashSet con los elementos de la colección C.

LinkedHashSet<E> hs = new LinkedHashSet<E>(Collection c);

3. LinkedHashSet(int size): Usado para inicializar el tamaño del LinkedHashSet con el entero mencionado en el parámetro.

LinkedHashSet<E> hs = new LinkedHashSet<E>(int size);

4. LinkedHashSet(int capacity, float fillRatio): se puede utilizar para inicializar tanto la capacidad como la tasa de llenado, también llamada capacidad de carga del LinkedHashSet con los argumentos mencionados en el parámetro. Cuando el número de elementos supera la capacidad del conjunto hash, se multiplica por el índice de relleno, lo que amplía la capacidad del LinkedHashSet.

LinkedHashSet<E> hs = new LinkedHashSet<E>(int capacity, int fillRatio);

Ejemplo:

Java

// Java Program to Illustrate LinkedHashSet
 
// Importing required classes
import java.util.LinkedHashSet;
 
// Main class
// LinkedHashSetExample
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating an empty LinkedHashSet of string type
        LinkedHashSet<String> linkedset
            = new LinkedHashSet<String>();
 
        // Adding element to LinkedHashSet
        // using add() method
        linkedset.add("A");
        linkedset.add("B");
        linkedset.add("C");
        linkedset.add("D");
 
        // Note: This will not add new element
        // as A already exists
        linkedset.add("A");
        linkedset.add("E");
 
        // Getting size of LinkedHashSet
        // using size() method
        System.out.println("Size of LinkedHashSet = "
                           + linkedset.size());
 
        System.out.println("Original LinkedHashSet:"
                           + linkedset);
 
        // Removing existing entry from above Set
        // using remove() method
        System.out.println("Removing D from LinkedHashSet: "
                           + linkedset.remove("D"));
 
        // Removing existing entry from above Set
        // that does not exist in Set
        System.out.println(
            "Trying to Remove Z which is not "
            + "present: " + linkedset.remove("Z"));
 
        // Checking for element whether it is present inside
        // Set or not using contains() method
        System.out.println("Checking if A is present="
                           + linkedset.contains("A"));
 
        // Noew lastly printing the updated LinkedHashMap
        System.out.println("Updated LinkedHashSet: "
                           + linkedset);
    }
}
Producción

Size of LinkedHashSet = 5
Original LinkedHashSet:[A, B, C, D, E]
Removing D from LinkedHashSet: true
Trying to Remove Z which is not present: false
Checking if A is present=true
Updated LinkedHashSet: [A, B, C, E]

Realización de varias operaciones en la clase LinkedHashSet

Veamos cómo realizar algunas operaciones de uso frecuente en LinkedHashSet.

Operación 1: Adición de elementos

Para agregar un elemento al LinkedHashSet, podemos usar el método add() . Esto es diferente de HashSet porque en HashSet, el orden de inserción no se retiene pero se retiene en LinkedHashSet.

Ejemplo:

Java

// Java Program to Add Elements to LinkedHashSet
 
// Importing required classes
import java.io.*;
import java.util.*;
 
// Main class
// AddingElementsToLinkedHashSet
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating an empty LinkedHashSet
        LinkedHashSet<String> hs = new LinkedHashSet<String>();
 
        // Adding elements to above Set
        // using add() method
 
        // Note: Insertion order is maintained
        hs.add("Geek");
        hs.add("For");
        hs.add("Geeks");
 
        // Printing elements of Set
        System.out.println("LinkedHashSet : " + hs);
    }
}
Producción:

LinkedHashSet : [Geek, For, Geeks]

Operación 2: Eliminación de elementos

Los valores se pueden eliminar de LinkedHashSet mediante el método remove() .

Ejemplo:

Java

// Java program to Remove Elements from LinkedHashSet
 
// Importing required classes
import java.io.*;
import java.util.*;
 
// Main class
// RemoveElementsFromLinkedHashSet
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating an empty LinekdhashSet of string type
        LinkedHashSet<String> hs
            = new LinkedHashSet<String>();
 
        // Adding elements to above Set
        // using add() method
        hs.add("Geek");
        hs.add("For");
        hs.add("Geeks");
        hs.add("A");
        hs.add("B");
        hs.add("Z");
 
        // Printing all above elements to the console
        System.out.println("Initial HashSet " + hs);
 
        // Removing the element from above Set
        hs.remove("B");
 
        // Again removing the element
        System.out.println("After removing element " + hs);
 
        // Returning false if the element is not present
        System.out.println(hs.remove("AC"));
    }
}
Producción:

Initial HashSet [Geek, For, Geeks, A, B, Z]
After removing element [Geek, For, Geeks, A, Z]
false

Operación 3: Iterando a través de LinkedHashSet

Iterar a través de los elementos de LinkedHashSet utilizando el método iterator() . El más famoso es usar el bucle for mejorado.

Ejemplo:

Java

// Java Program to Illustrate Iterating over LinkedHashSet
 
// Importing required classes
import java.io.*;
import java.util.*;
 
// Main class
// IteratingLinkedHashSet
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Instantiate an object of Set
        // Since LinkedHashSet implements Set
        // Set points to LinkedHashSet
        Set<String> hs = new LinkedHashSet<String>();
 
        // Adding elements to above Set
        // using add() method
        hs.add("Geek");
        hs.add("For");
        hs.add("Geeks");
        hs.add("A");
        hs.add("B");
        hs.add("Z");
 
        // Iterating though the LinkedHashSet
        // using iterators
        Iterator itr = hs.iterator();
 
        while (itr.hasNext())
            System.out.print(itr.next() + ", ");
 
        // New line
        System.out.println();
 
        // Using enhanced for loop for iteration
        for (String s : hs)
            System.out.print(s + ", ");
        System.out.println();
    }
}
Producción:

Geek, For, Geeks, A, B, Z, 
Geek, For, Geeks, A, B, Z, 

 Métodos de LinkedHashSet

Aquí, E es el tipo de elemento almacenado.

MÉTODO

DESCRIPCIÓN

divisor() Crea un Spliterator de enlace tardío y rápido sobre los elementos de este conjunto.

Métodos declarados en la clase java.util.AbstractSet

MÉTODO

DESCRIPCIÓN

es igual a (Objeto o) Compara el objeto especificado con este conjunto para la igualdad.
código hash() Devuelve el valor del código hash para este conjunto.
removeAll(Colección c) Elimina de este conjunto todos sus elementos que están contenidos en la colección especificada (operación opcional).

Métodos declarados en la clase java.util.AbstractCollection

MÉTODO

DESCRIPCIÓN

addAll​(Colección<? extiende E> c) Agrega todos los elementos de la colección especificada a esta colección (operación opcional).
contieneTodo​(Colección<?> c) Devuelve verdadero si esta colección contiene todos los elementos de la colección especificada.
retenerTodo​(Colección<?> c) Retiene solo los elementos de esta colección que están contenidos en la colección especificada (operación opcional).
aArray() Devuelve una array que contiene todos los elementos de esta colección.
a la Array​(T[] a) Devuelve una array que contiene todos los elementos de esta colección; el tipo de tiempo de ejecución de la array devuelta es el de la array especificada.
Enstringr() Devuelve una representación de string de esta colección.

Métodos declarados en la interfaz java.util.Collection

MÉTODO

DESCRIPCIÓN

flujoParalelo() Devuelve un Stream posiblemente paralelo con esta colección como fuente.

removeIf(Predicado<? super 

E> filtro)

Elimina todos los elementos de esta colección que satisfacen el predicado dado.
corriente() Devuelve un Stream secuencial con esta colección como fuente.

Métodos declarados en la clase java.util.HashSet

MÉTODO

DESCRIPCIÓN

añadir (E mi) Agrega el elemento especificado a este conjunto si aún no está presente.
clear() Elimina todos los elementos de este conjunto.
clon() Devuelve una copia superficial de esta instancia de HashSet: los elementos en sí no se clonan.
contiene(Objeto o) Devuelve verdadero si este conjunto contiene el elemento especificado.
esta vacio() Devuelve verdadero si este conjunto no contiene elementos.
iterador() Devuelve un iterador sobre los elementos de este conjunto.
quitar(Objeto o) Elimina el elemento especificado de este conjunto si está presente.
Talla() Devuelve el número de elementos de este conjunto (su cardinalidad).

Métodos declarados en la interfaz java.lang.Iterable

MÉTODO

DESCRIPCIÓN

forEach(Consumidor<? super

 T> acción)

Realiza la acción dada para cada elemento del iterable hasta que se hayan procesado todos los elementos o la acción genere una excepción.

Métodos declarados en la interfaz java.util.Set

MÉTODO DESCRIPCIÓN
añadir (elemento) Este método se utiliza para agregar un elemento específico al conjunto. La función agrega el elemento solo si el elemento especificado aún no está presente en el conjunto; de lo contrario, la función devuelve False si el elemento ya está presente en el Conjunto.
addAll(Colección c) Este método se utiliza para agregar todos los elementos de la colección mencionada al conjunto existente. Los elementos se añaden aleatoriamente sin seguir ningún orden específico.
clear() Este método se utiliza para eliminar todos los elementos del conjunto pero no eliminar el conjunto. La referencia para el conjunto todavía existe.
contiene (elemento) Este método se utiliza para comprobar si un elemento específico está presente en el Conjunto o no.
contieneTodo(Colección c) Este método se utiliza para verificar si el conjunto contiene todos los elementos presentes en la colección dada o no. Este método devuelve verdadero si el conjunto contiene todos los elementos y devuelve falso si falta alguno de los elementos.
código hash() Este método se usa para obtener el valor hashCode para esta instancia del Conjunto. Devuelve un valor entero que es el valor hashCode para esta instancia del Conjunto.
esta vacio() Este método se utiliza para comprobar si el conjunto está vacío o no.
iterador() Este método se utiliza para devolver el iterador del conjunto. Los elementos del conjunto se devuelven en orden aleatorio.
eliminar (elemento) Este método se utiliza para eliminar el elemento dado del conjunto. Este método devuelve True si el elemento especificado está presente en el Conjunto; de lo contrario, devuelve False.
removeAll(colección)  Este método se utiliza para eliminar todos los elementos de la colección que están presentes en el conjunto. Este método devuelve verdadero si este conjunto cambió como resultado de la llamada.
retenerTodo(colección) Este método se utiliza para retener todos los elementos del conjunto que se mencionan en la colección dada. Este método devuelve verdadero si este conjunto cambió como resultado de la llamada.
Talla() Este método se utiliza para obtener el tamaño del conjunto. Esto devuelve un valor entero que significa el número de elementos.
aArray() Este método se utiliza para formar una array de los mismos elementos que el Conjunto.
a la Array​(T[] a) Devuelve una array que contiene todos los elementos de este conjunto; el tipo de tiempo de ejecución de la array devuelta es el de la array especificada.

La siguiente es la diferencia entre LinkedHashMap y LinkedHashSet:

Categorías  LinkedHashMap LinkedHashSet
Operación Usd para almacenar pares clave-valor. Se utiliza para almacenar la colección de cosas 
Duplicados Tome claves únicas y no duplicadas, pero puede tomar valores duplicados No almacena ningún elemento duplicado 
Implementos mapa hash HashSet
Ejemplo Mapa<String, Entero> lhm = new LinkedHashMap<String, Entero>(); Set<String> lhs = new LinkedhashSet<String>();

Nota: 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. Si no necesita que se mantenga el orden de inserción, se recomienda utilizar HashSet y HashMap , que son más ligeros .

Este artículo es una contribución de Pratik Agarwal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *