Ebben az oktatóanyagban példák segítségével megismerhetjük a Java LinkedHashSet osztályt és annak módszereit.
A LinkedHashSetJava gyűjtemények keretrendszere mind a hashtable, mind a csatolt lista adatstruktúrájának funkcióit biztosítja.
Megvalósítja a Set felületet.

A LinkedHashSetHashSet-hez hasonló hash-táblákban vannak tárolva.
A kapcsolt kivonatkészletek azonban kétszeresen összekapcsolt listát tartanak fenn minden elemükön belül. A csatolt lista meghatározza az elemek sorrendjét a hash táblákba.
Hozzon létre egy LinkedHashSet-t
Összekapcsolt kivonatkészlet létrehozásához java.util.LinkedHashSetelőször importálnunk kell a csomagot.
A csomag importálása után a következőképpen hozhatunk létre összekapcsolt hash készleteket a Java-ban.
// LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75);
Itt hoztunk létre egy összekapcsolt hash készletet nevű számokkal.
Figyelem, a rész new LinkedHashSet(8, 0.75). Itt az első paraméter a kapacitás , a második pedig a loadFactor .
- kapacitás - Ennek a kivonatkészletnek a kapacitása 8. Ez azt jelenti, hogy 8 elemet képes tárolni.
- loadFactor - Ennek a kivonatkészletnek a terhelési tényezője 0,6. Ez azt jelenti, hogy ha hash-táblázatunk 60% -kal kitöltődik, az elemeket egy új hash-táblába helyezzük át, amely duplája az eredeti hash-tábla méretének.
Alapértelmezett kapacitás és terhelési tényező
Létrehozhat összekapcsolt kivonatkészletet anélkül, hogy meghatározná annak kapacitását és terhelési tényezőjét. Például,
// LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet();
Alapértelmezés szerint,
- a kapcsolt kivonatkészlet kapacitása 16 lesz
- a terhelési tényező 0,75 lesz
LinkedHashSet létrehozása más gyűjteményekből
Így hozhatunk létre összekapcsolt kivonatkészletet, amely más gyűjtemények összes elemét tartalmazza.
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); ) )
Kimenet
ArrayList: (2, 4) LinkedHashSet: (2, 4)
A LinkedHashSet módszerei
Az LinkedHashSetosztály olyan módszereket biztosít, amelyek lehetővé teszik számunkra, hogy különböző műveleteket hajtsunk végre a kapcsolt hash halmazon.
Elemek beszúrása a LinkedHashSet-be
add()- beszúrja a megadott elemet a kapcsolt kivonatkészletbeaddAll()- beszúrja a megadott gyűjtemény összes elemét a kapcsolt kivonatkészletbe
Például,
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); ) )
Kimenet
LinkedHashSet: (2, 4, 6) Új LinkedHashSet: (2, 4, 6, 5)
Hozzáférés a LinkedHashSet elemekhez
Egy összekapcsolt kivonatkészlet elemeihez való hozzáféréshez használhatjuk a iterator()módszert. Ennek a módszernek a használatához importálnunk kell a java.util.Iteratorcsomagot. Például,
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(", "); ) ) )
Kimenet
LinkedHashSet: (2, 5, 6) LinkedHashSet az Iterator használatával: 2, 5, 6,
Megjegyzés :
hasNext()akkor tér vissza,trueha a kapcsolt kivonatkészletben van egy következő elemnext()a linkelt hash halmaz következő elemét adja vissza
Távolítsa el az elemeket a HashSetből
remove()- eltávolítja a megadott elemet a kapcsolt kivonatkészletbőlremoveAll()- eltávolítja az összes elemet a kapcsolt kivonatkészletből
Például,
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); ) )
Kimenet
LinkedHashSet: (2, 5, 6) 5 eltávolítva? igaz Minden elem eltávolításra került? igaz
Műveletek beállítása
Az LinkedHashSetosztály különböző módszerei különféle halmazműveletek végrehajtására is használhatók.
Szettek Szövetsége
Kettő végzi az uniót két halmaz között, használhatjuk a addAll()módszert. Például,
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); ) )
Kimenet
LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Az Unió: (1, 3, 2, 4)
A halmazok metszéspontja
Két halmaz metszéspontjának végrehajtásához használhatjuk a retainAll()módszert. Például
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); ) )
Kimenet
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) A kereszteződés: (2)
A halmazok különbsége
A két halmaz közötti különbség kiszámításához használhatjuk a removeAll()módszert. Például,
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); ) )
Kimenet
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Különbség: (2)
Részhalmaz
Használhatjuk a containsAll()módszert annak ellenőrzésére, hogy egy halmaz egy másik halmaz részhalmaza-e vagy sem . Például,
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); ) )
Kimenet
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) A LinkedHashSet2 a LinkedHashSet1 részhalmaza? igaz
A LinkedHashSet egyéb módszerei
| Módszer | Leírás |
|---|---|
clone() | Létrehozza a LinkedHashSet |
contains() | Megkeresi a LinkedHashSetmegadott elemet, és logikai eredményt ad vissza |
isEmpty() | Ellenőrzi, hogy az LinkedHashSetüres-e |
size() | Visszaadja a LinkedHashSet |
clear() | Eltávolítja az összes elemet a 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:
- Az
TreeSetosztály megvalósítja azSortedSetinterfészt. Ezért rendezik a fahalmaz elemeit. AzLinkedHashSetosztály azonban csak az elemeinek beszúrási sorrendjét tartja fenn. - A
TreeSetáltalában lassabb, mint aLinkedHashSet. Azért, mert amikor egy elemet hozzáadnak a-hozTreeSet, el kell végeznie a rendezési műveletet. LinkedHashSetlehetővé teszi nullértékek beillesztését. Azonban nem lehet null értéket beszúrni aTreeSet.








