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:
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 relación 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); } }
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); } }
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")); } }
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(); } }
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 |
---|---|
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