Java LinkedHashSet

V tej vadnici bomo s pomočjo primerov spoznali razred Java LinkedHashSet in njegove metode.

LinkedHashSetRazred okviru Java zbirk zagotavlja funkcionalnosti tako Hashtable in povezane strukture seznam podatkov.

Izvaja vmesnik Set.

Elementi LinkedHashSetso shranjeni v razprševalnih tabelah, podobno kot HashSet.

Vendar povezani hash nabori vzdržujejo dvojno povezan seznam znotraj vseh svojih elementov. Povezani seznam določa vrstni red vstavljanja elementov v zgoščevalne tabele.

Ustvarite LinkedHashSet

Če želite ustvariti povezan nabor zgoščenk, moramo najprej uvoziti java.util.LinkedHashSetpaket.

Ko uvozimo paket, tukaj je opisano, kako lahko v Javi ustvarimo povezane nabore razprševanja.

 // LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75); 

Tu smo ustvarili povezani hash set z imenom.

Obvestilo, del new LinkedHashSet(8, 0.75). Tu je prvi parameter zmogljivost, drugi pa loadFactor .

  • zmogljivost - Zmogljivost tega razpršenega nabora je 8. Pomen, lahko vsebuje 8 elementov.
  • loadFactor - Faktor obremenitve tega razpršenega nabora je 0,6. To pomeni, da se elementi, kadar je naša hash tabela zapolnjena za 60%, premaknejo v novo hash tabelo dvojne velikosti prvotne hash tabele.

Privzeta zmogljivost in faktor obremenitve

Možno je ustvariti povezan hash set, ne da bi opredelili njegovo zmogljivost in faktor obremenitve. Na primer

 // LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet(); 

Privzeto,

  • zmogljivost povezanega nabora zgoščenk bo 16
  • faktor obremenitve bo 0,75

Ustvarjanje LinkedHashSet iz drugih zbirk

Tukaj je opisano, kako lahko ustvarimo povezan hash set, ki vsebuje vse elemente drugih zbirk.

 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); ) ) 

Izhod

 ArrayList: (2, 4) LinkedHashSet: (2, 4) 

Metode LinkedHashSet

LinkedHashSetRazred določa metode, ki nam omogočajo, da opravljajo različne dejavnosti na povezane razpršitve niza.

Vstavite elemente v LinkedHashSet

  • add() - vstavi določeni element v povezani sklop zgoščenih elementov
  • addAll() - v povezani nabor zgoščenk vstavi vse elemente določene zbirke

Na primer

 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); ) ) 

Izhod

 LinkedHashSet: (2, 4, 6) Novi LinkedHashSet: (2, 4, 6, 5) 

Dostopite do elementov LinkedHashSet

Za dostop do elementov povezanega nabora zgoščenk lahko uporabimo iterator()metodo. Za uporabo te metode moramo java.util.Iteratorpaket uvoziti . Na primer

 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(", "); ) ) ) 

Izhod

 LinkedHashSet: (2, 5, 6) LinkedHashSet z uporabo Iteratorja: 2, 5, 6, 

Opomba :

  • hasNext()vrne, trueče je v povezanem naboru zgoščenih elementov naslednji element
  • next() vrne naslednji element v povezani hash set

Odstranite elemente iz HashSet-a

  • remove() - odstrani navedeni element iz povezanega nabora zgoščenk
  • removeAll() - odstrani vse elemente iz povezanega nabora zgoščenk

Na primer

 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); ) ) 

Izhod

LinkedHashSet: (2, 5, 6) Ali je 5 odstranjenih? true Ali so vsi elementi odstranjeni? prav

Nastavite operacije

Različne metode LinkedHashSetrazreda lahko uporabimo tudi za izvajanje različnih nastavljenih operacij.

Zveza sklopov

Dva izvajata združitev med dvema nizoma, lahko uporabimo addAll()metodo. Na primer

 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); ) ) 

Izhod

 LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Union je: (1, 3, 2, 4) 

Presečišče množic

Za izvedbo presečišča med dvema nizoma lahko uporabimo retainAll()metodo. Na primer

 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); ) ) 

Izhod

 LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Presečišče je: (2) 

Razlika v kompletih

Za izračun razlike med obema nizoma lahko uporabimo removeAll()metodo. Na primer

 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); ) ) 

Izhod

 LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Razlika: (2) 

Podnabor

Če želimo preveriti, ali je niz podnabor drugega niza, lahko uporabimo containsAll()metodo. Na primer

 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); ) ) 

Izhod

LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Ali je LinkedHashSet2 podmnožica LinkedHashSet1? prav

Druge metode LinkedHashSet

Metoda Opis
clone() Ustvari kopijo datoteke LinkedHashSet
contains() Poišče LinkedHashSetnavedeni element in vrne logični rezultat
isEmpty() Preveri, če je polje LinkedHashSetprazno
size() Vrne velikost datoteke LinkedHashSet
clear() Odstrani vse 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:

  • TreeSetRazredu izvaja SortedSetvmesnik. Zato so elementi v drevesnem nizu razvrščeni. Vendar LinkedHashSetrazred ohranja le vrstni red vstavljanja svojih elementov.
  • A TreeSetje običajno počasnejši od a LinkedHashSet. To je zato, ker mora vsakič, ko je element dodan elementu TreeSet, izvesti postopek razvrščanja.
  • LinkedHashSetomogoča vstavljanje ničelnih vrednosti. Vendar ne moremo vstaviti ničelne vrednosti v TreeSet.

Zanimive Članki...