I den här handledningen lär vi oss om Java LinkedHashSet-klassen och dess metoder med hjälp av exempel.
Den LinkedHashSet
klass av samlingarna ram Java ger funktioner för både Hashtable och länkad lista datastrukturen.
Den implementerar Set-gränssnittet.
Element av LinkedHashSet
lagras 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.LinkedHashSet
paketet.
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 LinkedHashSet
klassen 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.Iterator
paketet. 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()
returnerartrue
om 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 LinkedHashSet
klassen 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 LinkedHashSet efter 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.
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
:
- Den
TreeSet
klass implementerarSortedSet
gränssnittet. Därför sorteras element i en träduppsättning. Emellertid denLinkedHashSet
enda 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 aTreeSet
måste det utföra sorteringsoperationen. LinkedHashSet
tillåter infogning av nollvärden. Vi kan dock inte infoga ett nullvärde tillTreeSet
.