Header Ads Widget

Ticker

6/recent/ticker-posts

Java LinkedHashSet

En este tutorial, aprenderemos sobre la clase Java LinkedHashSet y sus métodos con la ayuda de ejemplos.
anuncios a través de carbonoOferta por tiempo limitado: obtenga 10 imágenes gratuitas de Adobe Stock.ANUNCIOS A TRAVÉS DE CARBONO
La LinkedHashSetclase del marco de colecciones de Java proporciona funcionalidades tanto de la tabla hash como de la estructura de datos de la lista vinculada.
Implementa la interfaz Set .
La clase Java LinkedHastSet implementa la interfaz Set.
Los elementos de LinkedHashSetse almacenan en tablas hash similares a HashSet .
Sin embargo, los conjuntos de hash vinculados mantienen una lista doblemente vinculada internamente para todos sus elementos. La lista vinculada define el orden en que se insertan los elementos en las tablas hash.

Crear un conjunto LinkedHash

Para crear un conjunto de hash vinculado, java.util.LinkedHashSetprimero debemos importar el paquete.
Una vez que importamos el paquete, así es como podemos crear conjuntos de hash vinculados en Java.
  1. // LinkedHashSet with 8 capacity and 0.75 load factor
  2. LinkedHashSet<Integer> numbers = new LinkedHashSet<>(8, 0.75);
Aquí, hemos creado un conjunto de hash vinculado llamado números .
Aviso, la parte new LinkedHashSet<>(8, 0.75)Aquí, el primer parámetro es la capacidad y el segundo parámetro es loadFactor .
  • capacidad : la capacidad de este conjunto de hash es 8. Es decir, puede almacenar 8 elementos.
  • loadFactor : el factor de carga de este conjunto de hash es 0.6. Esto significa que cada vez que nuestra tabla hash se llena en un 60%, los elementos se mueven a una nueva tabla hash del doble del tamaño de la tabla hash original.
Capacidad predeterminada y factor de carga
Es posible crear un conjunto de hash vinculado sin definir su capacidad y factor de carga. Por ejemplo,
  1. // LinkedHashSet with default capacity and load factor
  2. LinkedHashSet<Integer> numbers1 = new LinkedHashSet<>();
Por defecto,
  • la capacidad del conjunto de hash vinculado será de 16
  • el factor de carga será 0.75

Crear LinkedHashSet desde otras colecciones

Aquí es cómo podemos crear un conjunto de hash vinculado que contenga todos los elementos de otras colecciones.
  1. import java.util.LinkedHashSet;
  2. import java.util.ArrayList;
  3. class Main {
  4. public static void main(String[] args) {
  5. // Creating an arrayList of even numbers
  6. ArrayList<Integer> evenNumbers = new ArrayList<>();
  7. evenNumbers.add(2);
  8. evenNumbers.add(4);
  9. System.out.println("ArrayList: " + evenNumbers);
  10. // Creating a LinkedHashSet from an ArrayList
  11. LinkedHashSet<Integer> numbers = new LinkedHashSet<>(evenNumbers);
  12. System.out.println("LinkedHashSet: " + numbers);
  13. }
  14. }
Salida
ArrayList: [2, 4]
LinkedHashSet: [2, 4]

Métodos de LinkedHashSet

La LinkedHashSetclase proporciona métodos que nos permiten realizar varias operaciones en el conjunto de hash vinculado.

Insertar elementos en LinkedHashSet

  • add() - inserta el elemento especificado en el conjunto de hash vinculado
  • addAll() - inserta todos los elementos de la colección especificada en el conjunto de hash vinculado
Por ejemplo,
  1. import java.util.LinkedHashSet;
  2. class Main {
  3. public static void main(String[] args) {
  4. LinkedHashSet<Integer> evenNumber = new LinkedHashSet<>();
  5. // Using add() method
  6. evenNumber.add(2);
  7. evenNumber.add(4);
  8. evenNumber.add(6);
  9. System.out.println("LinkedHashSet: " + evenNumber);
  10. LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
  11. // Using addAll() method
  12. numbers.addAll(evenNumber);
  13. numbers.add(5);
  14. System.out.println("New LinkedHashSet: " + numbers);
  15. }
  16. }
Salida
LinkedHashSet: [2, 4, 6]
Nuevo LinkedHashSet: [2, 4, 5, 6]

Acceder a elementos LinkedHashSet

Para acceder a los elementos de un conjunto de hash vinculado, podemos usar el iterator()método Para utilizar este método, debemos importar el java.util.Iteratorpaquete. Por ejemplo,
  1. import java.util.LinkedHashSet;
  2. import java.util.Iterator;
  3. class Main {
  4. public static void main(String[] args) {
  5. LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
  6. numbers.add(2);
  7. numbers.add(5);
  8. numbers.add(6);
  9. System.out.println("LinkedHashSet: " + numbers);
  10. // Calling the iterator() method
  11. Iterator<Integer> iterate = numbers.iterator();
  12. System.out.print("LinkedHashSet using Iterator: ");
  13. // Accessing elements
  14. while(iterate.hasNext()) {
  15. System.out.print(iterate.next());
  16. System.out.print(", ");
  17. }
  18. }
  19. }
Salida
LinkedHashSet: [2, 5, 6]
LinkedHashSet usando Iterator: 2, 5, 6,
Nota :
  • hasNext()devuelve truesi hay un siguiente elemento en el conjunto de hash vinculado
  • next() devuelve el siguiente elemento en el conjunto de hash vinculado

Eliminar elementos de HashSet

  • remove() - elimina el elemento especificado del conjunto de hash vinculado
  • removeAll() - elimina todos los elementos del conjunto de hash vinculado
Por ejemplo,
  1. import java.util.LinkedHashSet;
  2. class Main {
  3. public static void main(String[] args) {
  4. LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
  5. numbers.add(2);
  6. numbers.add(5);
  7. numbers.add(6);
  8. System.out.println("LinkedHashSet: " + numbers);
  9. // Using the remove() method
  10. boolean value1 = numbers.remove(5);
  11. System.out.println("Is 5 removed? " + value1);
  12. boolean value2 = numbers.removeAll(numbers);
  13. System.out.println("Are all elements removed? " + value2);
  14. }
  15. }
Salida
LinkedHashSet: [2, 5, 6]
¿Se han eliminado 5? Cierto
¿Se eliminan todos los elementos? Cierto

Establecer operaciones

Los diversos métodos de la LinkedHashSetclase también se pueden utilizar para realizar varias operaciones de conjuntos.

Unión de conjuntos

Dos realizan la unión entre dos conjuntos, podemos usar el addAll()método. Por ejemplo,
  1. import java.util.LinkedHashSet;
  2. class Main {
  3. public static void main(String[] args) {
  4. LinkedHashSet<Integer> evenNumbers = new LinkedHashSet<>();
  5. evenNumbers.add(2);
  6. evenNumbers.add(4);
  7. System.out.println("LinkedHashSet1: " + evenNumbers);
  8. LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
  9. numbers.add(1);
  10. numbers.add(3);
  11. System.out.println("LinkedHashSet2: " + numbers);
  12. // Union of two set
  13. numbers.addAll(evenNumbers);
  14. System.out.println("Union is: " + numbers);
  15. }
  16. }
Salida
LinkedHashSet1: [2, 4]
LinkedHashSet2: [1, 3]
La unión es: [1, 2, 3, 4]

Intersección de conjuntos

Para realizar la intersección entre dos conjuntos, podemos usar el retainAll()método. Por ejemplo
  1. import java.util.LinkedHashSet;
  2. class Main {
  3. public static void main(String[] args) {
  4. LinkedHashSet<Integer> primeNumbers = new LinkedHashSet<>();
  5. primeNumbers.add(2);
  6. primeNumbers.add(3);
  7. System.out.println("LinkedHashSet1: " + primeNumbers);
  8. LinkedHashSet<Integer> evenNumbers = new LinkedHashSet<>();
  9. evenNumbers.add(2);
  10. evenNumbers.add(4);
  11. System.out.println("LinkedHashSet2: " + evenNumbers);
  12. // Intersection of two sets
  13. evenNumbers.retainAll(primeNumbers);
  14. System.out.println("Intersection is: " + evenNumbers);
  15. }
  16. }
Salida
LinkedHashSet1: [2, 3]
LinkedHashSet2: [2, 4]
La intersección es: [2]

Diferencia de conjuntos

Para calcular la diferencia entre los dos conjuntos, podemos usar el removeAll()método. Por ejemplo,
  1. import java.util.LinkedHashSet;
  2. class Main {
  3. public static void main(String[] args) {
  4. LinkedHashSet<Integer> primeNumbers = new LinkedHashSet<>();
  5. primeNumbers.add(2);
  6. primeNumbers.add(3);
  7. primeNumbers.add(5);
  8. System.out.println("LinkedHashSet1: " + primeNumbers);
  9. LinkedHashSet<Integer> oddNumbers = new LinkedHashSet<>();
  10. oddNumbers.add(1);
  11. oddNumbers.add(3);
  12. oddNumbers.add(5);
  13. System.out.println("LinkedHashSet2: " + oddNumbers);
  14. // Difference between LinkedHashSet1 and LinkedHashSet2
  15. primeNumbers.removeAll(oddNumbers);
  16. System.out.println("Difference : " + primeNumbers);
  17. }
  18. }
Salida
LinkedHashSet1: [2, 3, 5]
LinkedHashSet2: [1, 3, 5]
Diferencia: [2]

Subconjunto

Para verificar si un conjunto es un subconjunto de otro conjunto o no, podemos usar el containsAll()método. Por ejemplo,
  1. import java.util.LinkedHashSet;
  2. class Main {
  3. public static void main(String[] args) {
  4. LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
  5. numbers.add(1);
  6. numbers.add(2);
  7. numbers.add(3);
  8. numbers.add(4);
  9. System.out.println("LinkedHashSet1: " + numbers);
  10. LinkedHashSet<Integer> primeNumbers = new LinkedHashSet<>();
  11. primeNumbers.add(2);
  12. primeNumbers.add(3);
  13. System.out.println("LinkedHashSet2: " + primeNumbers);
  14. // Check if primeNumbers is a subset of numbers
  15. boolean result = numbers.containsAll(primeNumbers);
  16. System.out.println("Is LinkedHashSet2 is subset of LinkedHashSet1? " + result);
  17. }
  18. }
Salida
LinkedHashSet1: [1, 2, 3, 4]
LinkedHashSet2: [2, 3]
¿LinkedHashSet2 es un subconjunto de LinkedHashSet1? Cierto

Otros métodos de LinkedHashSet

MétodoDescripción
clone()Crea una copia de LinkedHashSet
contains()Busca el LinkedHashSetelemento especificado y devuelve un resultado booleano.
isEmpty()Comprueba si LinkedHashSetestá vacío
size()Devuelve el tamaño de LinkedHashSet
clear()Elimina todos los elementos del LinkedHashSet
Para obtener más información sobre los LinkedHashSetmétodos, visite Java LinkedHashSet .

LinkedHashSet Vs. HashSet

Ambos LinkedHashSetHashSetimplementa la Setinterfaz. Sin embargo, existen algunas diferencias entre ellos.
  • LinkedHashSetmantiene una lista vinculada internamente. Debido a esto, mantiene el orden de inserción de sus elementos.
  • La LinkedHashSetclase requiere más almacenamiento que HashSetEsto se debe a que LinkedHashSetmantiene listas vinculadas internamente.
  • El rendimiento de LinkedHashSetes más lento que HashSetSe debe a las listas vinculadas presentes en LinkedHashSet.


LinkedHashSet Vs. TreeSet

Estas son las principales diferencias entre LinkedHashSetTreeSet:
  • La TreeSetclase implementa la SortedSetinterfaz. Es por eso que los elementos en un conjunto de árbol están ordenados. Sin embargo, la LinkedHashSetclase solo mantiene el orden de inserción de sus elementos.
  • TreeSetsuele ser más lento que a LinkedHashSetEsto se debe a que cada vez que se agrega un elemento a un elemento TreeSet, debe realizar la operación de clasificación.
  • LinkedHashSetpermite la inserción de valores nulos. Sin embargo, no podemos insertar un valor nulo en TreeSet.

Publicar un comentario

0 Comentarios