Ebben az oktatóanyagban példák segítségével megismerhetjük a Java LinkedHashSet osztályt és annak módszereit.
A LinkedHashSet
Java 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 LinkedHashSet
HashSet-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.LinkedHashSet
elő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 LinkedHashSet
osztá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.Iterator
csomagot. 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,true
ha 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 LinkedHashSet
osztá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 LinkedHashSet megadott 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.
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
:
- Az
TreeSet
osztály megvalósítja azSortedSet
interfészt. Ezért rendezik a fahalmaz elemeit. AzLinkedHashSet
osztá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. LinkedHashSet
lehetővé teszi nullértékek beillesztését. Azonban nem lehet null értéket beszúrni aTreeSet
.