Šajā apmācībā mēs ar piemēru palīdzību uzzināsim par Java LinkedHashSet klasi un tās metodēm.
LinkedHashSet
Java kolekcijas ietvaros klase nodrošina funkcijas, kas gan Hashtable un saistītā sarakstā datu struktūru.
Tas īsteno iestatīšanas saskarni.
Elementi LinkedHashSet
tiek glabāti hash tabulās, kas līdzīgas HashSet.
Tomēr saistītie hash komplekti uztur iekšēji divkārši saistītu sarakstu visiem tā elementiem. Saistītais saraksts nosaka secību, kādā elementi tiek ievietoti jaukšanas tabulās.
Izveidojiet LinkedHashSet
Lai izveidotu saistītu hash kopu, mums vispirms ir jāimportē java.util.LinkedHashSet
pakete.
Kad pakotne ir importēta, šeit ir norādīts, kā mēs varam izveidot saistītās hash kopas Java.
// LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75);
Šeit mēs esam izveidojuši saistītu hash kopu ar nosaukumiem.
Paziņojums, daļa new LinkedHashSet(8, 0.75)
. Pirmais parametrs ir kapacitāte, bet otrais parametrs - loadFactor .
- ietilpība - šī jaucējkomplekta ietilpība ir 8. Tas nozīmē, ka tajā var uzglabāt 8 elementus.
- loadFactor - šī jaucējkopa kopas slodzes koeficients ir 0,6. Tas nozīmē, ka ikreiz, kad mūsu jaukšanas tabula tiek aizpildīta par 60%, elementi tiek pārvietoti uz jaunu jaukšanas tabulu, kas ir divreiz lielāka par sākotnējās jaukšanas tabulas lielumu.
Noklusējuma jauda un slodzes koeficients
Ir iespējams izveidot saistītu hash kopu, nenosakot tā jaudu un slodzes koeficientu. Piemēram,
// LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet();
Pēc noklusējuma,
- saistītā jaucējkomplekta jauda būs 16
- slodzes koeficients būs 0,75
LinkedHashSet izveide no citām kolekcijām
Lūk, kā mēs varam izveidot saistītu hash komplektu, kurā ir visi citu kolekciju elementi.
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); ) )
Rezultāts
ArrayList: (2, 4) LinkedHashSet: (2, 4)
LinkedHashSet metodes
LinkedHashSet
Klase nodrošina metodes, kas ļauj mums veikt dažādas darbības saistītā hash komplektu.
Ievietojiet elementus LinkedHashSet
add()
- ievieto norādīto elementu saistītajā hash komplektāaddAll()
- ievieto visus norādītās kolekcijas elementus saistītajā hash komplektā
Piemēram,
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); ) )
Rezultāts
LinkedHashSet: (2, 4, 6) Jauns LinkedHashSet: (2, 4, 6, 5)
Piekļūstiet LinkedHashSet elementiem
Lai piekļūtu saistītā hash komplekta elementiem, mēs varam izmantot iterator()
metodi. Lai izmantotu šo metodi, mums ir jāimportē java.util.Iterator
pakotne. Piemēram,
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(", "); ) ) )
Rezultāts
LinkedHashSet: (2, 5, 6) LinkedHashSet, izmantojot Iterator: 2, 5, 6,
Piezīme :
hasNext()
atgriež,true
ja saistītajā jauktajā maiņas komplektā ir nākamais elementsnext()
atgriež nākamo elementu saistītajā hash setā
Noņemt elementus no HashSet
remove()
- noņem norādīto elementu no saistītā hash kopasremoveAll()
- noņem visus elementus no saistītās hash kopas
Piemēram,
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); ) )
Rezultāts
LinkedHashSet: (2, 5, 6) Vai 5 ir noņemti? true Vai visi elementi ir noņemti? taisnība
Iestatīt operācijas
Dažādas LinkedHashSet
klases metodes var izmantot arī dažādu kopu darbību veikšanai.
Komplektu savienība
Divi veic savienojumu starp diviem komplektiem, mēs varam izmantot addAll()
metodi. Piemēram,
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); ) )
Rezultāts
LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Savienība ir: (1, 3, 2, 4)
Komplektu krustojums
Lai veiktu divu kopu krustojumu, mēs varam izmantot retainAll()
metodi. Piemēram
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); ) )
Rezultāts
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Krustojums ir: (2)
Komplektu atšķirība
Lai aprēķinātu starpību starp abām kopām, mēs varam izmantot removeAll()
metodi. Piemēram,
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); ) )
Rezultāts
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Atšķirība: (2)
Apakškopa
Lai pārbaudītu, vai kopa ir citas kopas apakškopa, mēs varam izmantot containsAll()
metodi. Piemēram,
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); ) )
Rezultāts
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Vai LinkedHashSet2 ir LinkedHashSet1 apakškopa? taisnība
Citas LinkedHashSet metodes
Metode | Apraksts |
---|---|
clone() | Izveido faila kopiju LinkedHashSet |
contains() | Meklē LinkedHashSet norādīto elementu un atgriež Būla rezultātu |
isEmpty() | Pārbauda, vai LinkedHashSet ir tukšs |
size() | Atgriež LinkedHashSet |
clear() | Noņem visus elementus no 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
Klases īstenoSortedSet
interfeisu. Tāpēc elementi koku komplektā tiek sakārtoti. TomērLinkedHashSet
klase uztur tikai tās elementu ievietošanas kārtību.- A
TreeSet
parasti ir lēnāks nekā aLinkedHashSet
. Tas ir tāpēc, ka ikreiz, kad elements tiek pievienots aTreeSet
, tam ir jāveic šķirošanas darbība. LinkedHashSet
ļauj ievietot nulles vērtības. Tomēr mēs nevaram ievietot nulles vērtībuTreeSet
.