Java LinkedHashSet

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 set
  • addAll() - 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ća trueako postoji sljedeći element u povezanom hash skupu
  • next() vraća sljedeći element u povezanom hash skupu

Uklonite elemente iz HashSet-a

  • remove() - uklanja navedeni element iz povezanog skupa raspršivanja
  • removeAll() - 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.

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

  • TreeSetKlasa implementira SortedSetsučelje. Zato se elementi u skupu stabala sortiraju. Međutim, LinkedHashSetklasa održava samo redoslijed umetanja svojih elemenata.
  • A TreeSetje obično sporiji od a LinkedHashSet. To je zato što kad god se element doda u a TreeSet, on mora izvršiti operaciju sortiranja.
  • LinkedHashSetomogućuje umetanje null vrijednosti. Međutim, ne možemo umetnuti null vrijednost u TreeSet.

Zanimljivi članci...