Java LinkedHashSet

Šajā apmācībā mēs ar piemēru palīdzību uzzināsim par Java LinkedHashSet klasi un tās metodēm.

LinkedHashSetJava kolekcijas ietvaros klase nodrošina funkcijas, kas gan Hashtable un saistītā sarakstā datu struktūru.

Tas īsteno iestatīšanas saskarni.

Elementi LinkedHashSettiek glabāti hash tabulās, kas līdzīgas HashSet.

Tomēr saistītie hash komplekti uztur iekšēji divkārši saistītu sarakstu visiem tā elementiem. Saistītais saraksts nosaka secību, kādā elementi tiek ievietoti jaukšanas tabulās.

Izveidojiet LinkedHashSet

Lai izveidotu saistītu hash kopu, mums vispirms ir jāimportē java.util.LinkedHashSetpakete.

Kad pakotne ir importēta, šeit ir norādīts, kā mēs varam izveidot saistītās hash kopas Java.

 // LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75); 

Šeit mēs esam izveidojuši saistītu hash kopu ar nosaukumiem.

Paziņojums, daļa new LinkedHashSet(8, 0.75). Pirmais parametrs ir kapacitāte, bet otrais parametrs - loadFactor .

  • ietilpība - šī jaucējkomplekta ietilpība ir 8. Tas nozīmē, ka tajā var uzglabāt 8 elementus.
  • loadFactor - šī jaucējkopa kopas slodzes koeficients ir 0,6. Tas nozīmē, ka ikreiz, kad mūsu jaukšanas tabula tiek aizpildīta par 60%, elementi tiek pārvietoti uz jaunu jaukšanas tabulu, kas ir divreiz lielāka par sākotnējās jaukšanas tabulas lielumu.

Noklusējuma jauda un slodzes koeficients

Ir iespējams izveidot saistītu hash kopu, nenosakot tā jaudu un slodzes koeficientu. Piemēram,

 // LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet(); 

Pēc noklusējuma,

  • saistītā jaucējkomplekta jauda būs 16
  • slodzes koeficients būs 0,75

LinkedHashSet izveide no citām kolekcijām

Lūk, kā mēs varam izveidot saistītu hash komplektu, kurā ir visi citu kolekciju elementi.

 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); ) ) 

Rezultāts

 ArrayList: (2, 4) LinkedHashSet: (2, 4) 

LinkedHashSet metodes

LinkedHashSetKlase nodrošina metodes, kas ļauj mums veikt dažādas darbības saistītā hash komplektu.

Ievietojiet elementus LinkedHashSet

  • add() - ievieto norādīto elementu saistītajā hash komplektā
  • addAll() - ievieto visus norādītās kolekcijas elementus saistītajā hash komplektā

Piemēram,

 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); ) ) 

Rezultāts

 LinkedHashSet: (2, 4, 6) Jauns LinkedHashSet: (2, 4, 6, 5) 

Piekļūstiet LinkedHashSet elementiem

Lai piekļūtu saistītā hash komplekta elementiem, mēs varam izmantot iterator()metodi. Lai izmantotu šo metodi, mums ir jāimportē java.util.Iteratorpakotne. Piemēram,

 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(", "); ) ) ) 

Rezultāts

 LinkedHashSet: (2, 5, 6) LinkedHashSet, izmantojot Iterator: 2, 5, 6, 

Piezīme :

  • hasNext()atgriež, trueja saistītajā jauktajā maiņas komplektā ir nākamais elements
  • next() atgriež nākamo elementu saistītajā hash setā

Noņemt elementus no HashSet

  • remove() - noņem norādīto elementu no saistītā hash kopas
  • removeAll() - noņem visus elementus no saistītās hash kopas

Piemēram,

 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); ) ) 

Rezultāts

LinkedHashSet: (2, 5, 6) Vai 5 ir noņemti? true Vai visi elementi ir noņemti? taisnība

Iestatīt operācijas

Dažādas LinkedHashSetklases metodes var izmantot arī dažādu kopu darbību veikšanai.

Komplektu savienība

Divi veic savienojumu starp diviem komplektiem, mēs varam izmantot addAll()metodi. Piemēram,

 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); ) ) 

Rezultāts

 LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Savienība ir: (1, 3, 2, 4) 

Komplektu krustojums

Lai veiktu divu kopu krustojumu, mēs varam izmantot retainAll()metodi. Piemēram

 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); ) ) 

Rezultāts

 LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Krustojums ir: (2) 

Komplektu atšķirība

Lai aprēķinātu starpību starp abām kopām, mēs varam izmantot removeAll()metodi. Piemēram,

 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); ) ) 

Rezultāts

 LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Atšķirība: (2) 

Apakškopa

Lai pārbaudītu, vai kopa ir citas kopas apakškopa, mēs varam izmantot containsAll()metodi. Piemēram,

 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); ) ) 

Rezultāts

LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Vai LinkedHashSet2 ir LinkedHashSet1 apakškopa? taisnība

Citas LinkedHashSet metodes

Metode Apraksts
clone() Izveido faila kopiju LinkedHashSet
contains() Meklē LinkedHashSetnorādīto elementu un atgriež Būla rezultātu
isEmpty() Pārbauda, ​​vai LinkedHashSetir tukšs
size() Atgriež LinkedHashSet
clear() Noņem visus elementus no 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:

  • TreeSetKlases īsteno SortedSetinterfeisu. Tāpēc elementi koku komplektā tiek sakārtoti. Tomēr LinkedHashSetklase uztur tikai tās elementu ievietošanas kārtību.
  • A TreeSetparasti ir lēnāks nekā a LinkedHashSet. Tas ir tāpēc, ka ikreiz, kad elements tiek pievienots a TreeSet, tam ir jāveic šķirošanas darbība.
  • LinkedHashSetļauj ievietot nulles vērtības. Tomēr mēs nevaram ievietot nulles vērtību TreeSet.

Interesanti raksti...