Java LinkedHashSet

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 hajautusjoukkoon
  • addAll() - 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 elementti
  • next() palauttaa linkitetyn hajautusjoukon seuraavan elementin

Poista elementit HashSetistä

  • remove() - poistaa määritetyn elementin linkitetystä hajautusjoukosta
  • removeAll() - 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.

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

  • TreeSetLuokka toteuttaa SortedSetrajapinnan. Siksi puupaketin elementit lajitellaan. LinkedHashSetLuokka ylläpitää kuitenkin vain sen elementtien lisäysjärjestystä.
  • A TreeSeton yleensä hitaampi kuin a LinkedHashSet. 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 kohtaan TreeSet.

Mielenkiintoisia artikkeleita...