Java LinkedHashSet

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észletbe
  • addAll() - 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ő elem
  • next() 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ől
  • removeAll() - 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.

  • 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:

  • Az TreeSetosztály megvalósítja az SortedSetinterfészt. Ezért rendezik a fahalmaz elemeit. Az LinkedHashSetosztály azonban csak az elemeinek beszúrási sorrendjét tartja fenn.
  • A TreeSetáltalában lassabb, mint a LinkedHashSet. Azért, mert amikor egy elemet hozzáadnak a-hoz TreeSet, 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 a TreeSet.

érdekes cikkek...