Java LinkedHashSet

I denne opplæringen vil vi lære om Java LinkedHashSet-klassen og dens metoder ved hjelp av eksempler.

Den LinkedHashSetklassen av Java samlinger rammeverket gir funksjonalitet til både hashtabellen og lenket liste datastruktur.

Den implementerer Set-grensesnittet.

Elementer av LinkedHashSetlagres 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.LinkedHashSetpakken.

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 LinkedHashSetklasse 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-settet
  • addAll() - 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.Iteratorpakken. 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()returnerer truehvis det er et neste element i det tilknyttede hash-settet
  • next() returnerer neste element i det tilknyttede hash-settet

Fjern Elements fra HashSet

  • remove() - fjerner det angitte elementet fra det tilknyttede hash-settet
  • removeAll() - 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 LinkedHashSetklassen 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 LinkedHashSetetter det angitte elementet og returnerer et boolsk resultat
isEmpty() Sjekker om det LinkedHashSeter 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 than HashSet. This is because LinkedHashSet maintains linked lists internally.
  • The performance of LinkedHashSet is slower than HashSet. It is because of linked lists present in LinkedHashSet.

LinkedHashSet Vs. TreeSet

Here are the major differences between LinkedHashSet and TreeSet:

  • Den TreeSetklassen implementerer SortedSetgrensesnittet. Derfor er elementene i et tresett sortert. Imidlertid LinkedHashSetopprettholder klassen bare innsettingsrekkefølgen for elementene.
  • A TreeSeter vanligvis tregere enn a LinkedHashSet. Det er fordi når et element blir lagt til a TreeSet, må det utføre sorteringsoperasjonen.
  • LinkedHashSettillater innføring av nullverdier. Vi kan imidlertid ikke sette inn en nullverdi til TreeSet.

Interessante artikler...