I denne vejledning lærer vi om Java LinkedHashSet-klassen og dens metoder ved hjælp af eksempler.
Den LinkedHashSet
klasse af Java kollektioner rammer giver funktionaliteter både hashtabellen og den linkede liste datastruktur.
Det implementerer Set-grænsefladen.
Elementer af LinkedHashSet
gemmes i hash-tabeller svarende til HashSet.
Imidlertid opretholder tilknyttede hash-sæt en dobbeltkoblet liste internt for alle dens elementer. Den sammenkædede liste definerer rækkefølgen, som elementer indsættes i hash-tabeller.
Opret et LinkedHashSet
For at oprette et linket hash-sæt skal vi først importere java.util.LinkedHashSet
pakken.
Når vi først har importeret pakken, kan du oprette sammenkædede hash-sæt i Java her.
// LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75);
Her har vi oprettet et linket hash-sæt med navne numre.
Bemærk, den del new LinkedHashSet(8, 0.75)
. Her er den første parameter kapacitet, og den anden parameter er loadFactor .
- kapacitet - Kapaciteten for dette hash-sæt er 8. Det betyder, at det kan gemme 8 elementer.
- loadFactor - Belastningsfaktoren for dette hash-sæt er 0,6. Dette betyder, at når vores hash-tabel er fyldt med 60%, flyttes elementerne til en ny hash-tabel, der er dobbelt så stor som den oprindelige hash-tabel.
Standardkapacitet og belastningsfaktor
Det er muligt at oprette et linket hash-sæt uden at definere dets kapacitet og belastningsfaktor. For eksempel,
// LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet();
Som standard,
- kapaciteten for det linkede hash-sæt er 16
- belastningsfaktoren er 0,75
Oprettelse af LinkedHashSet fra andre samlinger
Her er hvordan vi kan oprette et linket hash-sæt, der indeholder alle elementerne 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); ) )
Produktion
ArrayList: (2, 4) LinkedHashSet: (2, 4)
Metoder til LinkedHashSet
Den LinkedHashSet
klasse indeholder metoder, der tillader os at udføre forskellige operationer på den linkede hash sæt.
Indsæt elementer til LinkedHashSet
add()
- indsætter det angivne element i det linkede hash-sætaddAll()
- indsætter alle elementerne i den angivne samling i det linkede hash-sæt
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); ) )
Produktion
LinkedHashSet: (2, 4, 6) Ny LinkedHashSet: (2, 4, 6, 5)
Få adgang til LinkedHashSet Elements
For at få adgang til elementerne i et linket hash-sæt kan vi bruge iterator()
metoden. For at kunne bruge denne metode skal vi importere java.util.Iterator
pakken. 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(", "); ) ) )
Produktion
LinkedHashSet: (2, 5, 6) LinkedHashSet ved hjælp af Iterator: 2, 5, 6,
Bemærk :
hasNext()
vender tilbage,true
hvis der er et næste element i det linkede hash-sætnext()
returnerer det næste element i det linkede hash-sæt
Fjern elementer fra HashSet
remove()
- fjerner det angivne element fra det linkede hash-sætremoveAll()
- fjerner alle elementerne fra det linkede hash-sæt
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); ) )
Produktion
LinkedHashSet: (2, 5, 6) Er 5 fjernet? sand Er alle elementer fjernet? sand
Indstil operationer
De forskellige metoder i LinkedHashSet
klassen kan også bruges til at udføre forskellige sætoperationer.
Union af sæt
To udfører samlingen mellem to sæt, vi kan bruge 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); ) )
Produktion
LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Union er: (1, 3, 2, 4)
Kryds af sæt
For at udføre krydset mellem to sæt kan vi bruge 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); ) )
Produktion
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Skæringspunktet er: (2)
Forskel mellem sæt
For at beregne forskellen mellem de to sæt kan vi bruge 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); ) )
Produktion
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Forskel: (2)
Delmængde
For at kontrollere, om et sæt er et undersæt af et andet sæt eller ej, kan vi bruge 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); ) )
Produktion
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Er LinkedHashSet2 en delmængde af LinkedHashSet1? sand
Andre metoder til LinkedHashSet
Metode | Beskrivelse |
---|---|
clone() | Opretter en kopi af LinkedHashSet |
contains() | Søger LinkedHashSet efter det angivne element og returnerer et boolsk resultat |
isEmpty() | Kontrollerer, om den LinkedHashSet er tom |
size() | Returnerer størrelsen på LinkedHashSet |
clear() | Fjerner alle elementerne 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.
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
klasse implementererSortedSet
grænsefladen. Derfor sorteres elementer i et tresæt.LinkedHashSet
Klassen opretholder imidlertid kun indsætningsrækkefølgen for sine elementer. - A
TreeSet
er normalt langsommere end aLinkedHashSet
. Det er fordi hver gang et element føjes til aTreeSet
, skal det udføre sorteringsoperationen. LinkedHashSet
tillader indsættelse af nulværdier. Vi kan dog ikke indsætte en nulværdi tilTreeSet
.