Java LinkedHashSet

I denne vejledning lærer vi om Java LinkedHashSet-klassen og dens metoder ved hjælp af eksempler.

Den LinkedHashSetklasse af Java kollektioner rammer giver funktionaliteter både hashtabellen og den linkede liste datastruktur.

Det implementerer Set-grænsefladen.

Elementer af LinkedHashSetgemmes 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.LinkedHashSetpakken.

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 LinkedHashSetklasse 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æt
  • addAll() - 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.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(", "); ) ) ) 

Produktion

 LinkedHashSet: (2, 5, 6) LinkedHashSet ved hjælp af Iterator: 2, 5, 6, 

Bemærk :

  • hasNext()vender tilbage, truehvis der er et næste element i det linkede hash-sæt
  • next() 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æt
  • removeAll() - 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 LinkedHashSetklassen 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 LinkedHashSetefter det angivne element og returnerer et boolsk resultat
isEmpty() Kontrollerer, om den LinkedHashSeter 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 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 TreeSetklasse implementerer SortedSetgrænsefladen. Derfor sorteres elementer i et tresæt. LinkedHashSetKlassen opretholder imidlertid kun indsætningsrækkefølgen for sine elementer.
  • A TreeSeter normalt langsommere end a LinkedHashSet. Det er fordi hver gang et element føjes til a TreeSet, skal det udføre sorteringsoperationen.
  • LinkedHashSettillader indsættelse af nulværdier. Vi kan dog ikke indsætte en nulværdi til TreeSet.

Interessante artikler...