Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java LinkedHashSet“ klasę ir jos metodus.
„ LinkedHashSetJava“ kolekcijų sistemos klasėje pateikiamos „hashtable“ ir susieto sąrašo duomenų struktūros funkcijos.
Jis įgyvendina sąsają „Nustatyti“.

Elementai LinkedHashSetsaugomi maišos lentelėse, panašiose į „HashSet“.
Tačiau susieti maišos rinkiniai palaiko dvigubai susietą visų jo elementų sąrašą. Susietas sąrašas apibrėžia elementų įterpimo į maišos lenteles tvarką.
Sukurkite „LinkedHashSet“
Norėdami sukurti susietą maišos rinkinį, pirmiausia turime importuoti java.util.LinkedHashSetpaketą.
Kai importuosime paketą, štai kaip galime sukurti susietus maišos rinkinius „Java“.
// LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75);
Čia mes sukūrėme susietą maišos rinkinį pavadintais skaičiais.
Atkreipkite dėmesį, dalis new LinkedHashSet(8, 0.75). Čia pirmasis parametras yra talpa, o antrasis - „ loadFactor“ .
- talpa - šio maišos rinkinio talpa yra 8. Tai reiškia, kad jame gali būti 8 elementai.
- loadFactor - šio maišos rinkinio apkrovos koeficientas yra 0,6. Tai reiškia, kad kai mūsų maišos lentelė užpildoma 60 proc., Elementai perkeliami į naują maišos lentelę, kurios dydis yra dvigubai didesnis nei originalios maišos lentelės.
Numatytasis pajėgumas ir apkrovos koeficientas
Galima sukurti susietą maišos rinkinį neapibrėžiant jo talpos ir apkrovos koeficiento. Pavyzdžiui,
// LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet();
Pagal numatytuosius nustatymus
- susieto maišos rinkinio talpa bus 16
- apkrovos koeficientas bus 0,75
„LinkedHashSet“ kūrimas iš kitų kolekcijų
Štai kaip mes galime sukurti susietą maišos rinkinį, kuriame būtų visi kitų kolekcijų elementai.
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); ) )
Rezultatas
„ArrayList“: (2, 4) „LinkedHashSet“: (2, 4)
„LinkedHashSet“ metodai
LinkedHashSetKlasė suteikia metodus, kurie leidžia mums atlikti įvairius darbus, ant susijęs maišos rinkinys.
Įterpti elementus į „LinkedHashSet“
add()- įterpia nurodytą elementą į susietą maišos rinkinįaddAll()- įterpia visus nurodytos kolekcijos elementus į susietą maišos rinkinį
Pavyzdžiui,
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); ) )
Rezultatas
„LinkedHashSet“: (2, 4, 6) Naujas „LinkedHashSet“: (2, 4, 6, 5)
Prieiga prie „LinkedHashSet“ elementų
Norėdami pasiekti susieto maišos rinkinio elementus, galime naudoti iterator()metodą. Norėdami naudoti šį metodą, turime importuoti java.util.Iteratorpaketą. Pavyzdžiui,
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(", "); ) ) )
Rezultatas
„LinkedHashSet“: (2, 5, 6) „LinkedHashSet“ naudojant „Iterator“: 2, 5, 6,
Pastaba :
hasNext()grąžinama,truejei susietame maišos rinkinyje yra kitas elementasnext()grąžina kitą susieto maišos rinkinio elementą
Pašalinkite elementus iš „HashSet“
remove()- pašalina nurodytą elementą iš susieto maišos rinkinioremoveAll()- pašalina visus elementus iš susieto maišos rinkinio
Pavyzdžiui,
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); ) )
Rezultatas
„LinkedHashSet“: (2, 5, 6) Ar 5 pašalinti? tiesa Ar visi elementai pašalinami? tiesa
Nustatyti operacijas
Įvairūs LinkedHashSetklasės metodai taip pat gali būti naudojami atliekant įvairias rinkinio operacijas.
Rinkinių sąjunga
Du atlieka sąjungą tarp dviejų rinkinių, mes galime naudoti addAll()metodą. Pavyzdžiui,
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); ) )
Rezultatas
„LinkedHashSet1“: (2, 4) „LinkedHashSet2“: (1, 3) Sąjunga yra: (1, 3, 2, 4)
Rinkinių sankirta
To perform the intersection between two sets, we can use the retainAll() method. For example
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); ) )
Output
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Intersection is: (2)
Difference of Sets
To calculate the difference between the two sets, we can use the removeAll() method. For example,
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); ) )
Output
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Difference: (2)
Subset
To check if a set is a subset of another set or not, we can use the containsAll() method. For example,
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); ) )
Output
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Is LinkedHashSet2 is a subset of LinkedHashSet1? true
Other Methods Of LinkedHashSet
| Method | Description |
|---|---|
clone() | Creates a copy of the LinkedHashSet |
contains() | Searches the LinkedHashSet for the specified element and returns a boolean result |
isEmpty() | Checks if the LinkedHashSet is empty |
size() | Returns the size of the LinkedHashSet |
clear() | Removes all the elements from the 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:
TreeSetKlasės įgyvendinaSortedSetsąsaja. Štai kodėl medžių rinkinio elementai yra rūšiuojami. TačiauLinkedHashSetklasė palaiko tik savo elementų įterpimo tvarką.- A
TreeSetpaprastai yra lėtesnis nei aLinkedHashSet. Taip yra todėl, kad kai elementas pridedamas prie aTreeSet, jis turi atlikti rūšiavimo operaciją. LinkedHashSetleidžia įterpti nulines reikšmes. Tačiau negalime įterpti nulinės vertės įTreeSet.








