V tomto výukovém programu se na příkladech seznámíme s třídou Java LinkedHashSet a jejími metodami.
LinkedHashSetTřída sbírek rámce Java poskytuje funkcionality obou Hashtable a propojeného struktury seznamu dat.
Implementuje rozhraní Set.

Prvky LinkedHashSetjsou uloženy v hašovacích tabulkách podobných HashSetu.
Propojené hash sady však interně udržují dvojitě propojený seznam pro všechny jeho prvky. Propojený seznam definuje pořadí, ve kterém jsou prvky vkládány do hash tabulek.
Vytvořte LinkedHashSet
Abychom mohli vytvořit propojenou hashovou sadu, musíme java.util.LinkedHashSetnejprve importovat balíček.
Jakmile naimportujeme balíček, můžeme v Java vytvořit propojené hash sady.
// LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75);
Zde jsme vytvořili propojenou hashovou sadu pojmenovaných čísel.
Všimněte si, část new LinkedHashSet(8, 0.75). Zde je prvním parametrem kapacita a druhým parametrem je loadFactor .
- kapacita - kapacita této hash sady je 8. To znamená, že může uložit 8 prvků.
- loadFactor - Faktor zatížení této hash sady je 0,6. To znamená, že kdykoli je naše hash tabulka naplněna o 60%, prvky jsou přesunuty do nové hash tabulky s dvojnásobnou velikostí původní hash tabulky.
Výchozí kapacita a faktor zatížení
Je možné vytvořit propojenou sadu hash, aniž byste definovali její kapacitu a faktor zatížení. Například,
// LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet();
Ve výchozím stavu,
- kapacita propojené sady hash bude 16
- činitel zatížení bude 0,75
Vytváření LinkedHashSet z jiných kolekcí
Zde je způsob, jak můžeme vytvořit propojenou hashovací sadu obsahující všechny prvky jiných kolekcí.
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); ) )
Výstup
ArrayList: (2, 4) LinkedHashSet: (2, 4)
Metody LinkedHashSet
LinkedHashSetTřída poskytuje metody, které nám umožní provádět různé operace na připojeném hash set.
Vložit prvky do LinkedHashSet
add()- vloží zadaný prvek do propojené hash sadyaddAll()- vloží všechny prvky určené kolekce do propojené hash sady
Například,
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); ) )
Výstup
LinkedHashSet: (2, 4, 6) Nová LinkedHashSet: (2, 4, 6, 5)
Přístup k prvkům LinkedHashSet
Pro přístup k prvkům propojené hash sady můžeme použít iterator()metodu. Aby bylo možné použít tuto metodu, musíme java.util.Iteratorbalíček importovat . Například,
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(", "); ) ) )
Výstup
LinkedHashSet: (2, 5, 6) LinkedHashSet pomocí Iterátoru: 2, 5, 6,
Poznámka :
hasNext()vrátí,truepokud je v propojené hash sadě další prveknext()vrátí další prvek v propojené hash sadě
Odebrat prvky z HashSet
remove()- odebere zadaný prvek z propojené hash sadyremoveAll()- odebere všechny prvky z propojené hash sady
Například,
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); ) )
Výstup
LinkedHashSet: (2, 5, 6) Je 5 odstraněno? true Jsou všechny prvky odstraněny? skutečný
Nastavit operace
Různé metody LinkedHashSettřídy lze také použít k provedení různých operací sady.
Unie sad
Dva provést sjednocení mezi dvěma sadami, můžeme použít addAll()metodu. Například,
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); ) )
Výstup
LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Union is: (1, 3, 2, 4)
Průnik množin
K provedení průniku mezi dvěma množinami můžeme použít retainAll()metodu. Například
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); ) )
Výstup
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Křižovatka je: (2)
Rozdíl sad
K výpočtu rozdílu mezi těmito dvěma sadami můžeme použít removeAll()metodu. Například,
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); ) )
Výstup
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Rozdíl: (2)
Podmnožina
K ověření, zda je množina podmnožinou jiné množiny, můžeme použít containsAll()metodu. Například,
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); ) )
Výstup
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Je LinkedHashSet2 podmnožinou LinkedHashSet1? skutečný
Další metody LinkedHashSet
| Metoda | Popis |
|---|---|
clone() | Vytvoří kopii souboru LinkedHashSet |
contains() | Vyhledá LinkedHashSetzadaný prvek a vrátí logický výsledek |
isEmpty() | Zkontroluje, zda LinkedHashSetje prázdná |
size() | Vrátí velikost LinkedHashSet |
clear() | Odebere všechny prvky z 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:
TreeSetTřída implementujeSortedSetrozhraní. Proto jsou tříděny prvky ve stromové sadě. NicméněLinkedHashSettřída udržuje pouze pořadí vložení jejích prvků.- A
TreeSetje obvykle pomalejší než aLinkedHashSet. Je to proto, že kdykoli je prvek přidán do aTreeSet, musí provést třídění. LinkedHashSetumožňuje vložení nulových hodnot. Nemůžeme však vložit hodnotu nullTreeSet.








