I denne opplæringen vil vi lære om Java LinkedHashSet-klassen og dens metoder ved hjelp av eksempler.
Den LinkedHashSetklassen av Java samlinger rammeverket gir funksjonalitet til både hashtabellen og lenket liste datastruktur.
Den implementerer Set-grensesnittet.

Elementer av LinkedHashSetlagres i hashtabeller som ligner på HashSet.
Imidlertid opprettholder koblede hash-sett en dobbeltkoblet liste internt for alle elementene. Den koblede listen definerer rekkefølgen elementene settes inn i hashtabeller.
Opprett et LinkedHashSet
For å opprette et koblet hash-sett, må vi først importere java.util.LinkedHashSetpakken.
Når vi har importert pakken, er det hvordan vi kan lage koblede hash-sett i Java.
 // LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75); 
Her har vi opprettet et lenket hashsett med navn.
Legg merke til, delen new LinkedHashSet(8, 0.75). Her er den første parameteren kapasitet og den andre parameteren loadFactor .
- kapasitet - Kapasiteten til dette hash-settet er 8. Det betyr at det kan lagre 8 elementer.
 - loadFactor - Lastfaktoren for dette hash-settet er 0,6. Dette betyr at når hasjbordet vårt fylles med 60%, flyttes elementene til et nytt hasjetabell som er dobbelt så stort som det opprinnelige hasjbordet.
 
Standard kapasitet og lastfaktor
Det er mulig å lage et koblet hash-sett uten å definere kapasitet og belastningsfaktor. For eksempel,
 // LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet(); 
Som standard
- kapasiteten til det tilknyttede hash-settet vil være 16
 - lastfaktoren vil være 0,75
 
Opprette LinkedHashSet fra andre samlinger
Slik kan vi lage et lenket hashsett som inneholder alle elementene i andre samlinger.
 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); ) ) 
Produksjon
ArrayList: (2, 4) LinkedHashSet: (2, 4)
Metoder for LinkedHashSet
Den LinkedHashSetklasse tilveiebringer metoder som tillater oss å utføre forskjellige operasjoner på den koblede hash-settet.
Sett inn elementer i LinkedHashSet
add()- setter inn det angitte elementet i det tilknyttede hash-settetaddAll()- setter inn alle elementene i den angitte samlingen i det tilknyttede hash-settet
For eksempel,
 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); ) ) 
Produksjon
LinkedHashSet: (2, 4, 6) Ny LinkedHashSet: (2, 4, 6, 5)
Få tilgang til LinkedHashSet Elements
For å få tilgang til elementene i et koblet hash-sett, kan vi bruke iterator()metoden. For å kunne bruke denne metoden, må vi importere java.util.Iteratorpakken. For eksempel,
 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(", "); ) ) ) 
Produksjon
LinkedHashSet: (2, 5, 6) LinkedHashSet ved hjelp av Iterator: 2, 5, 6,
Merk :
hasNext()returnerertruehvis det er et neste element i det tilknyttede hash-settetnext()returnerer neste element i det tilknyttede hash-settet
Fjern Elements fra HashSet
remove()- fjerner det angitte elementet fra det tilknyttede hash-settetremoveAll()- fjerner alle elementene fra det tilknyttede hash-settet
For eksempel,
 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); ) ) 
Produksjon
LinkedHashSet: (2, 5, 6) Er 5 fjernet? true Er alle elementene fjernet? ekte
Sett operasjoner
De forskjellige metodene i LinkedHashSetklassen kan også brukes til å utføre forskjellige settoperasjoner.
Union of Sets
To utfører foreningen mellom to sett, vi kan bruke addAll()metoden. For eksempel,
 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); ) ) 
Produksjon
LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Union er: (1, 3, 2, 4)
Kryss av sett
For å utføre skjæringspunktet mellom to sett, kan vi bruke retainAll()metoden. For eksempel
 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); ) ) 
Produksjon
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Krysset er: (2)
Forskjell mellom sett
For å beregne forskjellen mellom de to settene, kan vi bruke removeAll()metoden. For eksempel,
 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); ) ) 
Produksjon
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Forskjell: (2)
Delsett
For å sjekke om et sett er et delsett av et annet sett eller ikke, kan vi bruke containsAll()metoden. For eksempel,
 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); ) ) 
Produksjon
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Er LinkedHashSet2 en delmengde av LinkedHashSet1? ekte
Andre metoder for LinkedHashSet
| Metode | Beskrivelse | 
|---|---|
clone() |  Lager en kopi av LinkedHashSet |  
contains() |  Søker LinkedHashSetetter det angitte elementet og returnerer et boolsk resultat |  
isEmpty() |  Sjekker om det LinkedHashSeter tomt |  
size() |  Returnerer størrelsen på LinkedHashSet |  
clear() |  Fjerner alle elementene fra 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.
LinkedHashSetmaintains a linked list internally. Due to this, it maintains the insertion order of its elements.- The 
LinkedHashSetclass requires more storage thanHashSet. This is becauseLinkedHashSetmaintains linked lists internally. - The performance of 
LinkedHashSetis slower thanHashSet. It is because of linked lists present inLinkedHashSet. 
LinkedHashSet Vs. TreeSet
Here are the major differences between LinkedHashSet and TreeSet:
- Den 
TreeSetklassen implementererSortedSetgrensesnittet. Derfor er elementene i et tresett sortert. ImidlertidLinkedHashSetopprettholder klassen bare innsettingsrekkefølgen for elementene. - A 
TreeSeter vanligvis tregere enn aLinkedHashSet. Det er fordi når et element blir lagt til aTreeSet, må det utføre sorteringsoperasjonen. LinkedHashSettillater innføring av nullverdier. Vi kan imidlertid ikke sette inn en nullverdi tilTreeSet.








