I denne opplæringen vil vi lære om Java LinkedHashSet-klassen og dens metoder ved hjelp av eksempler.
Den LinkedHashSet
klassen av Java samlinger rammeverket gir funksjonalitet til både hashtabellen og lenket liste datastruktur.
Den implementerer Set-grensesnittet.
Elementer av LinkedHashSet
lagres i hashtabeller som ligner på HashSet.
Imidlertid opprettholder koblede hash-sett en dobbeltkoblet liste internt for alle elementene. Den koblede listen definerer rekkefølgen elementene settes inn i hashtabeller.
Opprett et LinkedHashSet
For å opprette et koblet hash-sett, må vi først importere java.util.LinkedHashSet
pakken.
Når vi har importert pakken, er det hvordan vi kan lage koblede hash-sett i Java.
// LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75);
Her har vi opprettet et lenket hashsett med navn.
Legg merke til, delen new LinkedHashSet(8, 0.75)
. Her er den første parameteren kapasitet og den andre parameteren loadFactor .
- kapasitet - Kapasiteten til dette hash-settet er 8. Det betyr at det kan lagre 8 elementer.
- loadFactor - Lastfaktoren for dette hash-settet er 0,6. Dette betyr at når hasjbordet vårt fylles med 60%, flyttes elementene til et nytt hasjetabell som er dobbelt så stort som det opprinnelige hasjbordet.
Standard kapasitet og lastfaktor
Det er mulig å lage et koblet hash-sett uten å definere kapasitet og belastningsfaktor. For eksempel,
// LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet();
Som standard
- kapasiteten til det tilknyttede hash-settet vil være 16
- lastfaktoren vil være 0,75
Opprette LinkedHashSet fra andre samlinger
Slik kan vi lage et lenket hashsett som inneholder alle elementene 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); ) )
Produksjon
ArrayList: (2, 4) LinkedHashSet: (2, 4)
Metoder for LinkedHashSet
Den LinkedHashSet
klasse tilveiebringer metoder som tillater oss å utføre forskjellige operasjoner på den koblede hash-settet.
Sett inn elementer i LinkedHashSet
add()
- setter inn det angitte elementet i det tilknyttede hash-settetaddAll()
- setter inn alle elementene i den angitte samlingen i det tilknyttede hash-settet
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); ) )
Produksjon
LinkedHashSet: (2, 4, 6) Ny LinkedHashSet: (2, 4, 6, 5)
Få tilgang til LinkedHashSet Elements
For å få tilgang til elementene i et koblet hash-sett, kan vi bruke iterator()
metoden. For å kunne bruke denne metoden, må 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(", "); ) ) )
Produksjon
LinkedHashSet: (2, 5, 6) LinkedHashSet ved hjelp av Iterator: 2, 5, 6,
Merk :
hasNext()
returnerertrue
hvis det er et neste element i det tilknyttede hash-settetnext()
returnerer neste element i det tilknyttede hash-settet
Fjern Elements fra HashSet
remove()
- fjerner det angitte elementet fra det tilknyttede hash-settetremoveAll()
- fjerner alle elementene fra det tilknyttede hash-settet
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); ) )
Produksjon
LinkedHashSet: (2, 5, 6) Er 5 fjernet? true Er alle elementene fjernet? ekte
Sett operasjoner
De forskjellige metodene i LinkedHashSet
klassen kan også brukes til å utføre forskjellige settoperasjoner.
Union of Sets
To utfører foreningen mellom to sett, vi kan bruke 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); ) )
Produksjon
LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Union er: (1, 3, 2, 4)
Kryss av sett
For å utføre skjæringspunktet mellom to sett, kan vi bruke 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); ) )
Produksjon
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Krysset er: (2)
Forskjell mellom sett
For å beregne forskjellen mellom de to settene, kan vi bruke 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); ) )
Produksjon
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Forskjell: (2)
Delsett
For å sjekke om et sett er et delsett av et annet sett eller ikke, kan vi bruke 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); ) )
Produksjon
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Er LinkedHashSet2 en delmengde av LinkedHashSet1? ekte
Andre metoder for LinkedHashSet
Metode | Beskrivelse |
---|---|
clone() | Lager en kopi av LinkedHashSet |
contains() | Søker LinkedHashSet etter det angitte elementet og returnerer et boolsk resultat |
isEmpty() | Sjekker om det LinkedHashSet er tomt |
size() | Returnerer størrelsen på LinkedHashSet |
clear() | Fjerner alle elementene 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
klassen implementererSortedSet
grensesnittet. Derfor er elementene i et tresett sortert. ImidlertidLinkedHashSet
opprettholder klassen bare innsettingsrekkefølgen for elementene. - A
TreeSet
er vanligvis tregere enn aLinkedHashSet
. Det er fordi når et element blir lagt til aTreeSet
, må det utføre sorteringsoperasjonen. LinkedHashSet
tillater innføring av nullverdier. Vi kan imidlertid ikke sette inn en nullverdi tilTreeSet
.