În acest tutorial, vom afla despre clasa Java LinkedHashSet și metodele sale cu ajutorul unor exemple.
LinkedHashSet
Clasa cadrului colecțiilor Java oferă funcționalități atât Hashtable și structura lista de date legate.
Implementează interfața Set.
Elementele LinkedHashSet
sunt 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
LinkedHashSet
Clasa 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 conectataddAll()
- 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.Iterator
pachetul. 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ătrue
dacă există un element următor în setul hash conectatnext()
returnează următorul element din setul hash conectat
Eliminați Elements din HashSet
remove()
- elimină elementul specificat din setul hash conectatremoveAll()
- 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 LinkedHashSet
clasei 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ă LinkedHashSet elementul specificat și returnează un rezultat boolean |
isEmpty() | Verifică dacă LinkedHashSet este 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 thanHashSet
. This is becauseLinkedHashSet
maintains linked lists internally. - The performance of
LinkedHashSet
is slower thanHashSet
. It is because of linked lists present inLinkedHashSet
.
LinkedHashSet Vs. TreeSet
Here are the major differences between LinkedHashSet
and TreeSet
:
TreeSet
Clasa implementeazaSortedSet
interfata. De aceea elementele dintr-un set de arbori sunt sortate. Cu toate acestea,LinkedHashSet
clasa menține doar ordinea de inserare a elementelor sale.- A
TreeSet
este de obicei mai lent decât aLinkedHashSet
. Acest lucru se datorează faptului că ori de câte ori un element este adăugat la unTreeSet
, trebuie să efectueze operația de sortare. LinkedHashSet
permite inserarea valorilor nule. Cu toate acestea, nu putem insera o valoare nulăTreeSet
.