U ovom uputstvu uz primjere ćemo naučiti o klasi Java LinkedHashSet i njezinim metodama.
LinkedHashSetKlasa Java zbirki okvira pruža funkcionalnosti oba Hashtable i povezanog strukture lista podataka.
Provodi sučelje Set.

Elementi LinkedHashSetdatoteke pohranjuju se u hash tablice slične HashSetu.
Međutim, povezani hash skupovi interno održavaju dvostruko povezani popis za sve svoje elemente. Povezani popis definira redoslijed umetanja elemenata u hash tablice.
Stvorite LinkedHashSet
Da bismo stvorili povezani hash set, prvo moramo uvesti java.util.LinkedHashSetpaket.
Jednom kada uvozimo paket, evo kako možemo stvoriti povezane hash skupove u Javi.
// LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75);
Ovdje smo stvorili povezani hash set nazvani brojevi.
Obavijest, dio new LinkedHashSet(8, 0.75). Ovdje je prvi parametar kapacitet, a drugi parametar loadFactor .
- kapacitet - Kapacitet ovog hash skupa je 8. Što znači da može pohraniti 8 elemenata.
- loadFactor - Faktor opterećenja ovog skupa raspršivanja je 0,6. To znači, kad god se naša hash tablica popuni za 60%, elementi se premještaju u novu hash tablicu dvostruke veličine izvorne hash tablice.
Zadani kapacitet i faktor opterećenja
Moguće je stvoriti povezani hash set bez definiranja njegove sposobnosti i faktora opterećenja. Na primjer,
// LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet();
Prema zadanim postavkama,
- kapacitet povezanog hash skupa bit će 16
- faktor opterećenja iznosit će 0,75
Stvaranje LinkedHashSet-a iz drugih kolekcija
Evo kako možemo stvoriti povezani hash set koji sadrži sve elemente drugih zbirki.
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); ) )
Izlaz
ArrayList: (2, 4) LinkedHashSet: (2, 4)
Metode LinkedHashSet
LinkedHashSetKlasa pruža metode koje omogućuju nam da obavljaju različite operacije na povezanom hash setu.
Umetnite elemente u LinkedHashSet
add()- ubacuje navedeni element u povezani hash setaddAll()- ubacuje sve elemente navedene zbirke u povezani hash set
Na primjer,
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); ) )
Izlaz
LinkedHashSet: (2, 4, 6) Novi LinkedHashSet: (2, 4, 6, 5)
Pristupite elementima LinkedHashSet
Da bismo pristupili elementima povezanog hash skupa, možemo koristiti iterator()metodu. Da bismo koristili ovu metodu, moramo uvesti java.util.Iteratorpaket. Na primjer,
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(", "); ) ) )
Izlaz
LinkedHashSet: (2, 5, 6) LinkedHashSet koristeći Iterator: 2, 5, 6,
Napomena :
hasNext()vraćatrueako postoji sljedeći element u povezanom hash skupunext()vraća sljedeći element u povezanom hash skupu
Uklonite elemente iz HashSet-a
remove()- uklanja navedeni element iz povezanog skupa raspršivanjaremoveAll()- uklanja sve elemente iz povezanog hash skupa
Na primjer,
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); ) )
Izlaz
LinkedHashSet: (2, 5, 6) Je li uklonjeno 5? true Jesu li uklonjeni svi elementi? pravi
Postavite operacije
Razne metode LinkedHashSetklase također se mogu koristiti za izvođenje različitih skupnih operacija.
Unija setova
Dva izvode uniju između dva skupa, možemo koristiti addAll()metodu. Na primjer,
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); ) )
Izlaz
LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Unija je: (1, 3, 2, 4)
Sjecište skupova
Da bismo izveli presijecanje dvaju skupova, možemo koristiti retainAll()metodu. Na primjer
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); ) )
Izlaz
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Raskrižje je: (2)
Razlika skupova
Da bismo izračunali razliku između dva skupa, možemo koristiti removeAll()metodu. Na primjer,
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); ) )
Izlaz
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Razlika: (2)
Podskup
Da bismo provjerili je li skup podskup drugog skupa ili ne, možemo koristiti containsAll()metodu. Na primjer,
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); ) )
Izlaz
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Je li LinkedHashSet2 podskup LinkedHashSet1? pravi
Ostale metode LinkedHashSet-a
| Metoda | Opis |
|---|---|
clone() | Stvara kopiju LinkedHashSet |
contains() | Pretražuje LinkedHashSetnavedeni element i vraća logički rezultat |
isEmpty() | Provjerava je li LinkedHashSetprazno |
size() | Vraća veličinu LinkedHashSet |
clear() | Uklanja sve elemente iz 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:
TreeSetKlasa implementiraSortedSetsučelje. Zato se elementi u skupu stabala sortiraju. Međutim,LinkedHashSetklasa održava samo redoslijed umetanja svojih elemenata.- A
TreeSetje obično sporiji od aLinkedHashSet. To je zato što kad god se element doda u aTreeSet, on mora izvršiti operaciju sortiranja. LinkedHashSetomogućuje umetanje null vrijednosti. Međutim, ne možemo umetnuti null vrijednost uTreeSet.








