Selles õpetuses õpime näidete abil Java LinkedHashSet klassi ja selle meetodeid.
LinkedHashSet
Klassi Java kogud raamistik annab funktsioone nii hashtable ja ahelloendid andmete struktuuri.
See rakendab liidest Set.
Elemente LinkedHashSet
salvestatakse 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.LinkedHashSet
esmalt 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
LinkedHashSet
Klassi ette meetodid, mis võimaldavad meil sooritada erinevaid toiminguid, mis on seotud hash komplekti.
Sisestage elemendid LinkedHashSeti
add()
- lisab määratud elemendi lingitud räsikomplektiaddAll()
- 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.Iterator
pakendi 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,true
kui lingitud räsikomplektis on järgmine elementnext()
tagastab lingitud räsikomplekti järgmise elemendi
Eemaldage elemendid HashSetist
remove()
- eemaldab lingitud räsikomplektist määratud elemendiremoveAll()
- 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
LinkedHashSet
Klassi 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 LinkedHashSet määratud elementi ja tagastab tõeväärtuse tulemuse |
isEmpty() | Kontrollib, kas see LinkedHashSet on 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 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
:
TreeSet
Klassi rakendabSortedSet
liidese. Sellepärast puidukomplekti elemendid sorteeritakse. KuidLinkedHashSet
klass säilitab ainult oma elementide sisestamise järjekorra.- A
TreeSet
on tavaliselt aeglasem kui aLinkedHashSet
. Sellepärast, et kui elemendile a lisatakse elementTreeSet
, peab ta sooritama sorteerimistoimingu. LinkedHashSet
võimaldab sisestada nullväärtusi. Me ei saa siiski nullväärtust sisestadaTreeSet
.