Java LinkedHashSet

Selles õpetuses õpime näidete abil Java LinkedHashSet klassi ja selle meetodeid.

LinkedHashSetKlassi Java kogud raamistik annab funktsioone nii hashtable ja ahelloendid andmete struktuuri.

See rakendab liidest Set.

Elemente LinkedHashSetsalvestatakse räsitabelites, mis on sarnased HashSetiga.

Lingitud räsihulgad säilitavad siiski kõigi selle elementide sisemiselt topeltlingitud loendi. Lingitud loendis määratletakse järjestus, milles elemendid räsitabelitesse lisatakse.

Looge LinkedHashSet

Lingitud räsikomplekti loomiseks peame java.util.LinkedHashSetesmalt paketi importima .

Kui pakett on imporditud, saate Java-s luua lingitud räsikomplekte.

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

Siin oleme loonud lingitud räsikomplekti nimega numbrid.

Pange tähele, see osa new LinkedHashSet(8, 0.75). Siin on esimene parameeter võimsus ja teine ​​parameeter loadFactor .

  • maht - selle räsikomplekti maht on 8. See tähendab, et see võib salvestada 8 elementi.
  • loadFactor - selle räsikomplekti koormustegur on 0,6. See tähendab, et alati, kui meie räsitabelit täidetakse 60%, viiakse elemendid uude räsitabelisse, mis on topelt suurem kui algne räsitabel.

Vaikimisi maht ja koormustegur

Lingitud räsikomplekti on võimalik luua ilma selle võimsust ja koormustegurit määramata. Näiteks,

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

Vaikimisi,

  • lingitud räsikomplekti maht on 16
  • koormustegur on 0,75

LinkedHashSeti loomine teistest kogudest

Nii saame luua lingitud räsikomplekti, mis sisaldab teiste kollektsioonide kõiki elemente.

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

Väljund

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

LinkedHashSeti meetodid

LinkedHashSetKlassi ette meetodid, mis võimaldavad meil sooritada erinevaid toiminguid, mis on seotud hash komplekti.

Sisestage elemendid LinkedHashSeti

  • add() - lisab määratud elemendi lingitud räsikomplekti
  • addAll() - lisab lingitud räsikomplekti kõik määratud kogumi elemendid

Näiteks,

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

Väljund

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

Juurdepääs LinkedHashSeti elementidele

Lingitud räsikomplekti elementidele juurde pääsemiseks saame kasutada iterator()meetodit. Selle meetodi kasutamiseks peame java.util.Iteratorpakendi importima . Näiteks,

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

Väljund

 LinkedHashSet: (2, 5, 6) LinkedHashSet, kasutades Iteratorit: 2, 5, 6, 

Märkus :

  • hasNext()tagastab, truekui lingitud räsikomplektis on järgmine element
  • next() tagastab lingitud räsikomplekti järgmise elemendi

Eemaldage elemendid HashSetist

  • remove() - eemaldab lingitud räsikomplektist määratud elemendi
  • removeAll() - eemaldab lingitud räsikomplektist kõik elemendid

Näiteks,

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

Väljund

LinkedHashSet: (2, 5, 6) Kas 5 on eemaldatud? true Kas kõik elemendid on eemaldatud? tõsi

Määra toimingud

LinkedHashSetKlassi erinevaid meetodeid saab kasutada ka erinevate komplektoperatsioonide sooritamiseks.

Komplektide liit

Kaks teostavad liitu kahe komplekti vahel, saame addAll()meetodit kasutada . Näiteks,

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

Väljund

 LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Liit on: (1, 3, 2, 4) 

Komplektide ristumiskoht

Kahe komplekti ristumiskoha teostamiseks saame kasutada retainAll()meetodit. Näiteks

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

Väljund

 LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Ristmik on: (2) 

Komplektide erinevus

Kahe komplekti erinevuse arvutamiseks võime kasutada removeAll()meetodit. Näiteks,

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

Väljund

 LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Erinevus: (2) 

Alamhulk

Et kontrollida, kas komplekt on mõne teise hulga alamhulk või mitte, saame kasutada containsAll()meetodit. Näiteks,

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

Väljund

LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Kas LinkedHashSet2 on LinkedHashSet1 alamhulk? tõsi

Muud LinkedHashSeti meetodid

Meetod Kirjeldus
clone() Loob faili koopia LinkedHashSet
contains() Otsib LinkedHashSetmääratud elementi ja tagastab tõeväärtuse tulemuse
isEmpty() Kontrollib, kas see LinkedHashSeton tühi
size() Tagastab LinkedHashSet
clear() Eemaldab rakendusest kõik elemendid 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:

  • TreeSetKlassi rakendab SortedSetliidese. Sellepärast puidukomplekti elemendid sorteeritakse. Kuid LinkedHashSetklass säilitab ainult oma elementide sisestamise järjekorra.
  • A TreeSeton tavaliselt aeglasem kui a LinkedHashSet. Sellepärast, et kui elemendile a lisatakse element TreeSet, peab ta sooritama sorteerimistoimingu.
  • LinkedHashSetvõimaldab sisestada nullväärtusi. Me ei saa siiski nullväärtust sisestada TreeSet.

Huvitavad Artiklid...