V tej vadnici bomo s pomočjo primerov spoznali razred Java LinkedHashSet in njegove metode.
LinkedHashSet
Razred okviru Java zbirk zagotavlja funkcionalnosti tako Hashtable in povezane strukture seznam podatkov.
Izvaja vmesnik Set.
Elementi LinkedHashSet
so 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.LinkedHashSet
paket.
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
LinkedHashSet
Razred 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 elementovaddAll()
- 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.Iterator
paket 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 elementnext()
vrne naslednji element v povezani hash set
Odstranite elemente iz HashSet-a
remove()
- odstrani navedeni element iz povezanega nabora zgoščenkremoveAll()
- 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 LinkedHashSet
razreda 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 LinkedHashSet navedeni element in vrne logični rezultat |
isEmpty() | Preveri, če je polje LinkedHashSet prazno |
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 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
Razredu izvajaSortedSet
vmesnik. Zato so elementi v drevesnem nizu razvrščeni. VendarLinkedHashSet
razred ohranja le vrstni red vstavljanja svojih elementov.- A
TreeSet
je običajno počasnejši od aLinkedHashSet
. To je zato, ker mora vsakič, ko je element dodan elementuTreeSet
, izvesti postopek razvrščanja. LinkedHashSet
omogoča vstavljanje ničelnih vrednosti. Vendar ne moremo vstaviti ničelne vrednosti vTreeSet
.