I den här handledningen lär vi oss om Java LinkedHashSet-klassen och dess metoder med hjälp av exempel.
Den LinkedHashSetklass av samlingarna ram Java ger funktioner för både Hashtable och länkad lista datastrukturen.
Den implementerar Set-gränssnittet.

Element av LinkedHashSetlagras i hashtabeller som liknar HashSet.
Länkade hashuppsättningar håller dock en dubbelt länkad lista internt för alla dess element. Den länkade listan definierar i vilken ordning element infogas i hashtabeller.
Skapa en LinkedHashSet
För att skapa en länkad hashuppsättning måste vi först importera java.util.LinkedHashSetpaketet.
När vi har importerat paketet, här är hur vi kan skapa länkade hashuppsättningar i Java.
// LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75);
Här har vi skapat en länkad hashuppsättning med namnen.
Lägg märke till, delen new LinkedHashSet(8, 0.75). Här är den första parametern kapacitet och den andra parametern är loadFactor .
- Kapacitet - Kapaciteten för denna hashuppsättning är 8. Det betyder att den kan lagra 8 element.
- loadFactor - Lastfaktorn för denna hashuppsättning är 0,6. Detta betyder att när vår hash-tabell fylls med 60% flyttas elementen till en ny hash-tabell med dubbelt så stor som den ursprungliga hash-tabellen.
Standardkapacitet och lastfaktor
Det är möjligt att skapa en länkad hashuppsättning utan att definiera dess kapacitet och belastningsfaktor. Till exempel,
// LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet();
Som standard,
- kapaciteten för den länkade hashuppsättningen blir 16
- belastningsfaktorn blir 0,75
Skapa LinkedHashSet från andra samlingar
Så här kan vi skapa en länkad hashuppsättning som innehåller alla element i andra samlingar.
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); ) )
Produktion
ArrayList: (2, 4) LinkedHashSet: (2, 4)
Metoder för LinkedHashSet
I LinkedHashSetklassen innehåller metoder som tillåter oss att utföra olika operationer på den länkade hash set.
Infoga element i LinkedHashSet
add()- infogar det angivna elementet i den länkade hashuppsättningenaddAll()- infogar alla element i den angivna samlingen i den länkade hashuppsättningen
Till exempel,
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); ) )
Produktion
LinkedHashSet: (2, 4, 6) Ny LinkedHashSet: (2, 4, 6, 5)
Åtkomst till LinkedHashSet-element
För att komma åt elementen i en länkad hashuppsättning kan vi använda iterator()metoden. För att kunna använda den här metoden måste vi importera java.util.Iteratorpaketet. Till exempel,
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(", "); ) ) )
Produktion
LinkedHashSet: (2, 5, 6) LinkedHashSet med Iterator: 2, 5, 6,
Obs :
hasNext()returnerartrueom det finns ett nästa element i den länkade hashuppsättningennext()returnerar nästa element i den länkade hashuppsättningen
Ta bort element från HashSet
remove()- tar bort det angivna elementet från den länkade hashuppsättningenremoveAll()- tar bort alla element från den länkade hashuppsättningen
Till exempel,
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); ) )
Produktion
LinkedHashSet: (2, 5, 6) Är 5 borttagen? true Är alla element borttagna? Sann
Ställ in funktioner
De olika metoderna i LinkedHashSetklassen kan också användas för att utföra olika uppsättningsoperationer.
Union of Sets
Två utför kopplingen mellan två uppsättningar, vi kan använda addAll()metoden. Till exempel,
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); ) )
Produktion
LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Unionen är: (1, 3, 2, 4)
Korsning av uppsättningar
För att utföra korsningen mellan två uppsättningar kan vi använda retainAll()metoden. Till exempel
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); ) )
Produktion
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Korsningen är: (2)
Skillnad mellan uppsättningar
För att beräkna skillnaden mellan de två uppsättningarna kan vi använda removeAll()metoden. Till exempel,
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); ) )
Produktion
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Skillnad: (2)
Delmängd
För att kontrollera om en uppsättning är en delmängd av en annan uppsättning eller inte kan vi använda containsAll()metoden. Till exempel,
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); ) )
Produktion
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Är LinkedHashSet2 en delmängd av LinkedHashSet1? Sann
Andra metoder för LinkedHashSet
| Metod | Beskrivning |
|---|---|
clone() | Skapar en kopia av LinkedHashSet |
contains() | Söker LinkedHashSetefter det angivna elementet och returnerar ett booleskt resultat |
isEmpty() | Kontrollerar om den LinkedHashSetär tom |
size() | Returnerar storleken på LinkedHashSet |
clear() | Tar bort alla element från 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
TreeSetklass implementerarSortedSetgränssnittet. Därför sorteras element i en träduppsättning. Emellertid denLinkedHashSetenda klassen bibehåller ings ordning av dess beståndsdelar. - A
TreeSetär vanligtvis långsammare än aLinkedHashSet. Det beror på att varje gång ett element läggs till i aTreeSetmåste det utföra sorteringsoperationen. LinkedHashSettillåter infogning av nollvärden. Vi kan dock inte infoga ett nullvärde tillTreeSet.








