U ovom uputstvu uz primjere ćemo naučiti o klasi Java LinkedHashSet i njezinim metodama.
LinkedHashSet
Klasa Java zbirki okvira pruža funkcionalnosti oba Hashtable i povezanog strukture lista podataka.
Provodi sučelje Set.
Elementi LinkedHashSet
datoteke 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.LinkedHashSet
paket.
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
LinkedHashSet
Klasa 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.Iterator
paket. 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ćatrue
ako 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 LinkedHashSet
klase 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 LinkedHashSet navedeni element i vraća logički rezultat |
isEmpty() | Provjerava je li LinkedHashSet prazno |
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.
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
Klasa implementiraSortedSet
sučelje. Zato se elementi u skupu stabala sortiraju. Međutim,LinkedHashSet
klasa održava samo redoslijed umetanja svojih elemenata.- A
TreeSet
je obično sporiji od aLinkedHashSet
. To je zato što kad god se element doda u aTreeSet
, on mora izvršiti operaciju sortiranja. LinkedHashSet
omogućuje umetanje null vrijednosti. Međutim, ne možemo umetnuti null vrijednost uTreeSet
.