Java LinkedHashSet

În acest tutorial, vom afla despre clasa Java LinkedHashSet și metodele sale cu ajutorul unor exemple.

LinkedHashSetClasa cadrului colecțiilor Java oferă funcționalități atât Hashtable și structura lista de date legate.

Implementează interfața Set.

Elementele LinkedHashSetsunt stocate în tabele hash similare cu HashSet.

Cu toate acestea, seturile de hash conectate mențin o listă dublă legată intern pentru toate elementele sale. Lista legată definește ordinea în care elementele sunt inserate în tabelele hash.

Creați un LinkedHashSet

Pentru a crea un set hash conectat, trebuie mai java.util.LinkedHashSetîntâi să importăm pachetul.

Odată ce am importat pachetul, iată cum putem crea seturi de hash conectate în Java.

 // LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75); 

Aici, am creat un set hash conectat numit numere.

Observați, partea new LinkedHashSet(8, 0.75). Aici, primul parametru este capacitatea, iar al doilea parametru este loadFactor .

  • capacitate - Capacitatea acestui set hash este 8. Adică, poate stoca 8 elemente.
  • loadFactor - Factorul de încărcare al acestui set de hash este 0,6. Aceasta înseamnă că, ori de câte ori tabelul nostru hash este umplut cu 60%, elementele sunt mutate într-un nou tabel hash de dimensiunea dublă a tabelului hash original.

Capacitatea implicită și factorul de încărcare

Este posibil să creați un set de hash conectat fără a-i defini capacitatea și factorul de încărcare. De exemplu,

 // LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet(); 

În mod implicit,

  • capacitatea setului hash conectat va fi de 16
  • factorul de încărcare va fi 0,75

Crearea LinkedHashSet din alte colecții

Iată cum putem crea un set hash conectat care să conțină toate elementele altor colecții.

 import java.util.LinkedHashSet; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an arrayList of even numbers ArrayList evenNumbers = new ArrayList(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("ArrayList: " + evenNumbers); // Creating a LinkedHashSet from an ArrayList LinkedHashSet numbers = new LinkedHashSet(evenNumbers); System.out.println("LinkedHashSet: " + numbers); ) ) 

Ieșire

 ArrayList: (2, 4) LinkedHashSet: (2, 4) 

Metode de LinkedHashSet

LinkedHashSetClasa prevede metode care ne permit de a efectua diverse operații pe platoul de filmare hash legat.

Inserați elemente în LinkedHashSet

  • add() - inserează elementul specificat în setul hash conectat
  • addAll() - inserează toate elementele colecției specificate în setul hash conectat

De exemplu,

 import java.util.LinkedHashSet; class Main ( public static void main(String() args) ( LinkedHashSet evenNumber = new LinkedHashSet(); // Using add() method evenNumber.add(2); evenNumber.add(4); evenNumber.add(6); System.out.println("LinkedHashSet: " + evenNumber); LinkedHashSet numbers = new LinkedHashSet(); // Using addAll() method numbers.addAll(evenNumber); numbers.add(5); System.out.println("New LinkedHashSet: " + numbers); ) ) 

Ieșire

 LinkedHashSet: (2, 4, 6) Nou LinkedHashSet: (2, 4, 6, 5) 

Accesați elementele LinkedHashSet

Pentru a accesa elementele unui set hash conectat, putem folosi iterator()metoda. Pentru a utiliza această metodă, trebuie să importăm java.util.Iteratorpachetul. De exemplu,

 import java.util.LinkedHashSet; import java.util.Iterator; class Main ( public static void main(String() args) ( LinkedHashSet numbers = new LinkedHashSet(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("LinkedHashSet: " + numbers); // Calling the iterator() method Iterator iterate = numbers.iterator(); System.out.print("LinkedHashSet using Iterator: "); // Accessing elements while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) ) 

Ieșire

 LinkedHashSet: (2, 5, 6) LinkedHashSet folosind Iterator: 2, 5, 6, 

Notă :

  • hasNext()returnează truedacă există un element următor în setul hash conectat
  • next() returnează următorul element din setul hash conectat

Eliminați Elements din HashSet

  • remove() - elimină elementul specificat din setul hash conectat
  • removeAll() - elimină toate elementele din setul hash conectat

De exemplu,

 import java.util.LinkedHashSet; class Main ( public static void main(String() args) ( LinkedHashSet numbers = new LinkedHashSet(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("LinkedHashSet: " + numbers); // Using the remove() method boolean value1 = numbers.remove(5); System.out.println("Is 5 removed? " + value1); boolean value2 = numbers.removeAll(numbers); System.out.println("Are all elements removed? " + value2); ) ) 

Ieșire

LinkedHashSet: (2, 5, 6) 5 este eliminat? adevărat Sunt eliminate toate elementele? Adevărat

Operații de setare

Diferitele metode ale LinkedHashSetclasei pot fi, de asemenea, utilizate pentru a efectua diverse operații de setare.

Uniunea seturilor

Doi efectuează uniunea dintre două seturi, putem folosi addAll()metoda. De exemplu,

 import java.util.LinkedHashSet; class Main ( public static void main(String() args) ( LinkedHashSet evenNumbers = new LinkedHashSet(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("LinkedHashSet1: " + evenNumbers); LinkedHashSet numbers = new LinkedHashSet(); numbers.add(1); numbers.add(3); System.out.println("LinkedHashSet2: " + numbers); // Union of two set numbers.addAll(evenNumbers); System.out.println("Union is: " + numbers); ) ) 

Ieșire

 LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Uniunea este: (1, 3, 2, 4) 

Intersecția seturilor

Pentru a efectua intersecția dintre două seturi, putem folosi retainAll()metoda. De exemplu

 import java.util.LinkedHashSet; class Main ( public static void main(String() args) ( LinkedHashSet primeNumbers = new LinkedHashSet(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("LinkedHashSet1: " + primeNumbers); LinkedHashSet evenNumbers = new LinkedHashSet(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("LinkedHashSet2: " + evenNumbers); // Intersection of two sets evenNumbers.retainAll(primeNumbers); System.out.println("Intersection is: " + evenNumbers); ) ) 

Ieșire

 LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Intersecția este: (2) 

Diferența seturilor

Pentru a calcula diferența dintre cele două seturi, putem folosi removeAll()metoda. De exemplu,

 import java.util.LinkedHashSet; class Main ( public static void main(String() args) ( LinkedHashSet primeNumbers = new LinkedHashSet(); primeNumbers.add(2); primeNumbers.add(3); primeNumbers.add(5); System.out.println("LinkedHashSet1: " + primeNumbers); LinkedHashSet oddNumbers = new LinkedHashSet(); oddNumbers.add(1); oddNumbers.add(3); oddNumbers.add(5); System.out.println("LinkedHashSet2: " + oddNumbers); // Difference between LinkedHashSet1 and LinkedHashSet2 primeNumbers.removeAll(oddNumbers); System.out.println("Difference : " + primeNumbers); ) ) 

Ieșire

 LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Diferență: (2) 

Subset

Pentru a verifica dacă un set este sau nu un subset al altui set, putem folosi containsAll()metoda. De exemplu,

 import java.util.LinkedHashSet; class Main ( public static void main(String() args) ( LinkedHashSet numbers = new LinkedHashSet(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); System.out.println("LinkedHashSet1: " + numbers); LinkedHashSet primeNumbers = new LinkedHashSet(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("LinkedHashSet2: " + primeNumbers); // Check if primeNumbers is a subset of numbers boolean result = numbers.containsAll(primeNumbers); System.out.println("Is LinkedHashSet2 is subset of LinkedHashSet1? " + result); ) ) 

Ieșire

LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) LinkedHashSet2 este un subset al LinkedHashSet1? Adevărat

Alte metode ale LinkedHashSet

Metodă Descriere
clone() Creează o copie a fișierului LinkedHashSet
contains() Caută LinkedHashSetelementul specificat și returnează un rezultat boolean
isEmpty() Verifică dacă LinkedHashSeteste gol
size() Returnează dimensiunea fișierului LinkedHashSet
clear() Elimină toate elementele din LinkedHashSet

To learn more about LinkedHashSet methods, visit Java LinkedHashSet (official Java documentation).

LinkedHashSet Vs. HashSet

Both LinkedHashSet and HashSet implements the Set interface. However, there exist some differences between them.

  • LinkedHashSet maintains a linked list internally. Due to this, it maintains the insertion order of its elements.
  • The LinkedHashSet class requires more storage than HashSet. This is because LinkedHashSet maintains linked lists internally.
  • The performance of LinkedHashSet is slower than HashSet. It is because of linked lists present in LinkedHashSet.

LinkedHashSet Vs. TreeSet

Here are the major differences between LinkedHashSet and TreeSet:

  • TreeSetClasa implementeaza SortedSetinterfata. De aceea elementele dintr-un set de arbori sunt sortate. Cu toate acestea, LinkedHashSetclasa menține doar ordinea de inserare a elementelor sale.
  • A TreeSeteste de obicei mai lent decât a LinkedHashSet. Acest lucru se datorează faptului că ori de câte ori un element este adăugat la un TreeSet, trebuie să efectueze operația de sortare.
  • LinkedHashSetpermite inserarea valorilor nule. Cu toate acestea, nu putem insera o valoare nulă TreeSet.

Articole interesante...