Tässä opetusohjelmassa opitaan Java LinkedHashSet -luokasta ja sen menetelmistä esimerkkien avulla.
LinkedHashSetLuokka Java kokoelmien kehys tarjoaa toimintoja sekä hashtable ja linkitetyn listadatarakennetta.
Se toteuttaa Set-käyttöliittymän.

Elementit LinkedHashSettallennetaan hash-taulukoihin, jotka ovat samanlaisia kuin HashSet.
Linkitetyt hajautusjoukot ylläpitävät kuitenkin kaksinkertaisesti linkitettyä luetteloa sisäisesti kaikille sen elementeille. Linkitetty luettelo määrittää järjestyksen, jossa elementit lisätään hash-taulukoihin.
Luo LinkedHashSet
Linkitetyn hajautusjoukon luomiseksi meidän on java.util.LinkedHashSetensin tuotava paketti.
Kun tuot paketin, voimme luoda näin linkitettyjä hash-sarjoja Java-sovelluksessa.
// LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75);
Tässä olemme luoneet linkitetyn hajautusjoukon nimeltä numerot.
Huomaa, osa new LinkedHashSet(8, 0.75). Ensimmäinen parametri on kapasiteetti ja toinen parametri loadFactor .
- kapasiteetti - Tämän hajautusjoukon kapasiteetti on 8. Tämä tarkoittaa, että se voi tallentaa 8 elementtiä.
- loadFactor - Tämän hajautusjoukon kuormituskerroin on 0,6. Tämä tarkoittaa, että aina kun hash-taulukko täytetään 60%, elementit siirretään uuteen hash-taulukkoon, joka on kaksinkertainen alkuperäisen hash-taulukon kokoon nähden.
Oletuskapasiteetti ja kuormituskerroin
On mahdollista luoda linkitetty hajautusjoukko määrittelemättä sen kapasiteettia ja kuormituskerrointa. Esimerkiksi,
// LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet();
Oletuksena,
- linkitetyn hajautusjoukon kapasiteetti on 16
- kuormituskerroin on 0,75
LinkedHashSetin luominen muista kokoelmista
Näin voimme luoda linkitetyn hajautusjoukon, joka sisältää kaikki muiden kokoelmien elementit.
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); ) )
Tuotos
ArrayList: (2, 4) LinkedHashSet: (2, 4)
LinkedHashSetin menetelmät
LinkedHashSetLuokan tarjoaa menetelmiä, joiden avulla voimme tehdä erilaisia operaatioita linkitetty hash asetettu.
Lisää elementit LinkedHashSetiin
add()- lisää määritetyn elementin linkitettyyn hajautusjoukkoonaddAll()- lisää kaikki määritetyn kokoelman elementit linkitettyyn hajautusjoukkoon
Esimerkiksi,
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); ) )
Tuotos
LinkedHashSet: (2, 4, 6) Uusi LinkedHashSet: (2, 4, 6, 5)
Käytä LinkedHashSet-elementtejä
Voit käyttää linkitetyn hajautusjoukon elementtejä iterator()menetelmällä. Tämän menetelmän käyttämiseksi meidän on tuotava java.util.Iteratorpaketti. Esimerkiksi,
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(", "); ) ) )
Tuotos
LinkedHashSet: (2, 5, 6) LinkedHashSet käyttämällä Iteratoria: 2, 5, 6,
Huomaa :
hasNext()palauttaa,truejos linkitetyssä hajautusjoukossa on seuraava elementtinext()palauttaa linkitetyn hajautusjoukon seuraavan elementin
Poista elementit HashSetistä
remove()- poistaa määritetyn elementin linkitetystä hajautusjoukostaremoveAll()- poistaa kaikki elementit linkitetystä hajautusjoukosta
Esimerkiksi,
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); ) )
Tuotos
LinkedHashSet: (2, 5, 6) Poistetaanko 5? true Poistetaanko kaikki elementit? totta
Aseta toiminnot
LinkedHashSetLuokan eri menetelmiä voidaan käyttää myös erilaisten joukkooperaatioiden suorittamiseen.
Sarjojen liitto
Kaksi suorittaa liitoksen kahden sarjan välillä, voimme käyttää addAll()menetelmää. Esimerkiksi,
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); ) )
Tuotos
LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Unioni on: (1, 3, 2, 4)
Joukkojen leikkauspiste
Kahden ryhmän leikkauksen suorittamiseksi voimme käyttää retainAll()menetelmää. Esimerkiksi
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); ) )
Tuotos
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Risteys on: (2)
Sarjojen ero
Kahden ryhmän eron laskemiseksi voimme käyttää removeAll()menetelmää. Esimerkiksi,
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); ) )
Tuotos
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Ero: (2)
Alajoukko
Voit tarkistaa, onko joukko toisen joukon osajoukko vai ei, voimme käyttää containsAll()menetelmää. Esimerkiksi,
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); ) )
Tuotos
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Onko LinkedHashSet2 LinkedHashSet1: n osajoukko? totta
Muut LinkedHashSet-menetelmät
| Menetelmä | Kuvaus |
|---|---|
clone() | Luo kopion LinkedHashSet |
contains() | Hakee LinkedHashSetmääritetyn elementin ja palauttaa loogisen tuloksen |
isEmpty() | Tarkistaa onko LinkedHashSettyhjä |
size() | Palauttaa LinkedHashSet |
clear() | Poistaa kaikki elementit 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.
LinkedHashSetmaintains a linked list internally. Due to this, it maintains the insertion order of its elements.- The
LinkedHashSetclass requires more storage thanHashSet. This is becauseLinkedHashSetmaintains linked lists internally. - The performance of
LinkedHashSetis slower thanHashSet. It is because of linked lists present inLinkedHashSet.
LinkedHashSet Vs. TreeSet
Here are the major differences between LinkedHashSet and TreeSet:
TreeSetLuokka toteuttaaSortedSetrajapinnan. Siksi puupaketin elementit lajitellaan.LinkedHashSetLuokka ylläpitää kuitenkin vain sen elementtien lisäysjärjestystä.- A
TreeSeton yleensä hitaampi kuin aLinkedHashSet. Se johtuu siitä, että aina kun elementti lisätään a:TreeSethan, sen on suoritettava lajittelutoiminto. LinkedHashSetsallii nolla-arvojen lisäämisen. Emme kuitenkaan voi lisätä nolla-arvoa kohtaanTreeSet.








