In diesem Tutorial lernen wir anhand von Beispielen die Java LinkedHashSet-Klasse und ihre Methoden kennen.
Die LinkedHashSetKlasse des Java-Sammlungsframeworks bietet Funktionen sowohl für die Hashtabelle als auch für die Datenstruktur der verknüpften Liste.
Es implementiert die Set-Schnittstelle.

Elemente von LinkedHashSetwerden in Hash-Tabellen ähnlich wie HashSet gespeichert.
Verknüpfte Hash-Sets führen jedoch intern eine doppelt verknüpfte Liste für alle ihre Elemente. Die verknüpfte Liste definiert die Reihenfolge, in der Elemente in Hash-Tabellen eingefügt werden.
Erstellen Sie ein LinkedHashSet
Um einen verknüpften Hash-Satz zu erstellen, müssen wir java.util.LinkedHashSetzuerst das Paket importieren .
Sobald wir das Paket importiert haben, können wir hier verknüpfte Hash-Sets in Java erstellen.
// LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75);
Hier haben wir einen verknüpften Hash-Satz mit dem Namen "Nummern" erstellt.
Beachten Sie, das Teil new LinkedHashSet(8, 0.75). Hier ist der erste Parameter die Kapazität und der zweite Parameter loadFactor .
- Kapazität - Die Kapazität dieses Hash-Sets beträgt 8. Das heißt, es können 8 Elemente gespeichert werden.
- loadFactor - Der Ladefaktor dieses Hash-Sets beträgt 0,6. Das heißt, wenn unsere Hash-Tabelle zu 60% gefüllt ist, werden die Elemente in eine neue Hash-Tabelle verschoben, die doppelt so groß ist wie die ursprüngliche Hash-Tabelle.
Standardkapazität und Lastfaktor
Es ist möglich, einen verknüpften Hash-Satz zu erstellen, ohne dessen Kapazität und Auslastungsfaktor zu definieren. Beispielsweise,
// LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet();
Standardmäßig,
- Die Kapazität des verknüpften Hash-Sets beträgt 16
- Der Lastfaktor beträgt 0,75
LinkedHashSet aus anderen Sammlungen erstellen
So können wir ein verknüpftes Hash-Set erstellen, das alle Elemente anderer Sammlungen enthält.
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); ) )
Ausgabe
ArrayList: (2, 4) LinkedHashSet: (2, 4)
Methoden von LinkedHashSet
Die LinkedHashSetKlasse bietet Methoden, mit denen wir verschiedene Operationen für den verknüpften Hash-Satz ausführen können.
Elemente in LinkedHashSet einfügen
add()- fügt das angegebene Element in den verknüpften Hash-Satz einaddAll()- fügt alle Elemente der angegebenen Sammlung in den verknüpften Hash-Satz ein
Beispielsweise,
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); ) )
Ausgabe
LinkedHashSet: (2, 4, 6) Neues LinkedHashSet: (2, 4, 6, 5)
Greifen Sie auf LinkedHashSet-Elemente zu
Um auf die Elemente eines verknüpften Hash-Sets zuzugreifen, können wir die iterator()Methode verwenden. Um diese Methode verwenden zu können, müssen wir das java.util.IteratorPaket importieren . Beispielsweise,
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(", "); ) ) )
Ausgabe
LinkedHashSet: (2, 5, 6) LinkedHashSet mit Iterator: 2, 5, 6,
Hinweis :
hasNext()Gibt zurück,truewenn das verknüpfte Hash-Set ein nächstes Element enthältnext()Gibt das nächste Element im verknüpften Hash-Set zurück
Elemente aus HashSet entfernen
remove()- Entfernt das angegebene Element aus dem verknüpften Hash-SetremoveAll()- Entfernt alle Elemente aus dem verknüpften Hash-Set
Beispielsweise,
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); ) )
Ausgabe
LinkedHashSet: (2, 5, 6) Wird 5 entfernt? true Werden alle Elemente entfernt? wahr
Operationen einstellen
Die verschiedenen Methoden der LinkedHashSetKlasse können auch verwendet werden, um verschiedene Mengenoperationen auszuführen.
Vereinigung von Mengen
Zwei führen die Vereinigung zwischen zwei Mengen durch, wir können die addAll()Methode verwenden. Beispielsweise,
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); ) )
Ausgabe
LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Union ist: (1, 3, 2, 4)
Schnittmenge von Mengen
To perform the intersection between two sets, we can use the retainAll() method. For example
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); ) )
Output
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Intersection is: (2)
Difference of Sets
To calculate the difference between the two sets, we can use the removeAll() method. For example,
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); ) )
Output
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Difference: (2)
Subset
To check if a set is a subset of another set or not, we can use the containsAll() method. For example,
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); ) )
Output
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Is LinkedHashSet2 is a subset of LinkedHashSet1? true
Other Methods Of LinkedHashSet
| Method | Description |
|---|---|
clone() | Creates a copy of the LinkedHashSet |
contains() | Searches the LinkedHashSet for the specified element and returns a boolean result |
isEmpty() | Checks if the LinkedHashSet is empty |
size() | Returns the size of the LinkedHashSet |
clear() | Removes all the elements from the 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:
- Die
TreeSetKlasse implementiert dieSortedSetSchnittstelle. Aus diesem Grund werden Elemente in einem Baumsatz sortiert. DieLinkedHashSetKlasse behält jedoch nur die Einfügereihenfolge ihrer Elemente bei. - A
TreeSetist normalerweise langsamer als aLinkedHashSet. Dies liegt daran, dass jedes Mal, wenn ein Element zu a hinzugefügtTreeSetwird, die Sortieroperation ausgeführt werden muss. LinkedHashSetermöglicht das Einfügen von Nullwerten. Wir können jedoch keinen Nullwert in einfügenTreeSet.








