Dalam tutorial ini, kita akan belajar mengenai kelas Java LinkedHashSet dan kaedahnya dengan bantuan contoh.
The LinkedHashSetkelas rangka koleksi Java memberikan fungsi kedua-dua hashtable dan struktur senarai data yang dipautkan.
Ia melaksanakan antara muka Set.

Elemen LinkedHashSetdisimpan dalam jadual hash yang serupa dengan HashSet.
Walau bagaimanapun, set hash terpaut mengekalkan senarai dua kali ganda secara dalaman untuk semua elemennya. Senarai terpaut menentukan urutan elemen dimasukkan ke dalam jadual hash.
Buat LinkedHashSet
Untuk membuat set hash terpaut, kita mesti mengimport java.util.LinkedHashSetpakej terlebih dahulu.
Setelah kami mengimport pakej, berikut adalah bagaimana kita dapat membuat set hash terpaut di Java.
 // LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75); 
Di sini, kami telah membuat set hash terpaut bernama nombor.
Perhatikan, bahagiannya new LinkedHashSet(8, 0.75). Di sini, parameter pertama adalah kapasiti dan parameter kedua adalah loadFactor .
- kapasiti - Kapasiti set hash ini adalah 8. Maksudnya, ia dapat menyimpan 8 elemen.
 - loadFactor - Faktor beban set hash ini ialah 0.6. Ini bermaksud, setiap kali jadual hash kami diisi sebanyak 60%, unsur-unsur dipindahkan ke jadual hash baru dua kali ganda dari ukuran meja hash asal.
 
Kapasiti lalai dan faktor beban
Anda boleh membuat set hash terpaut tanpa menentukan kapasiti dan faktor muatannya. Sebagai contoh,
 // LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet(); 
Secara lalai,
- kapasiti set hash terpaut akan menjadi 16
 - faktor beban akan menjadi 0.75
 
Membuat LinkedHashSet dari Koleksi Lain
Inilah cara kita dapat membuat set hash terpaut yang mengandungi semua elemen koleksi lain.
 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); ) ) 
Pengeluaran
ArrayList: (2, 4) LinkedHashSet: (2, 4)
Kaedah LinkedHashSet
The LinkedHashSetkelas menyediakan kaedah yang membolehkan kita untuk melakukan pelbagai operasi pada set hash yang dipautkan.
Masukkan Elemen ke LinkedHashSet
add()- memasukkan elemen yang ditentukan ke set hash terpautaddAll()- memasukkan semua elemen koleksi yang ditentukan ke set hash terpaut
Sebagai contoh,
 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); ) ) 
Pengeluaran
LinkedHashSet: (2, 4, 6) LinkedHashSet Baru: (2, 4, 6, 5)
Akses Elemen LinkedHashSet
Untuk mengakses elemen set hash terpaut, kita dapat menggunakan iterator()kaedahnya. Untuk menggunakan kaedah ini, kita mesti mengimport java.util.Iteratorpakej. Sebagai contoh,
 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(", "); ) ) ) 
Pengeluaran
LinkedHashSet: (2, 5, 6) LinkedHashSet menggunakan Iterator: 2, 5, 6,
Nota :
hasNext()kembalitruejika terdapat elemen seterusnya dalam set hash yang dipautkannext()mengembalikan elemen seterusnya dalam set hash terpaut
Keluarkan Elemen dari HashSet
remove()- mengeluarkan elemen yang ditentukan dari set hash terpautremoveAll()- membuang semua elemen dari set hash terpaut
Sebagai contoh,
 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); ) ) 
Pengeluaran
LinkedHashSet: (2, 5, 6) Adakah 5 dikeluarkan? benar Adakah semua unsur dikeluarkan? benar
Tetapkan Operasi
Pelbagai kaedah LinkedHashSetkelas juga boleh digunakan untuk melakukan pelbagai operasi set.
Kesatuan Set
Dua melakukan penyatuan antara dua set, kita boleh menggunakan addAll()kaedahnya. Sebagai contoh,
 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); ) ) 
Pengeluaran
LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Kesatuan adalah: (1, 3, 2, 4)
Persimpangan Set
Untuk melakukan persimpangan antara dua set, kita boleh menggunakan retainAll()kaedahnya. Sebagai contoh
 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); ) ) 
Pengeluaran
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Persimpangan adalah: (2)
Perbezaan Set
Untuk mengira perbezaan antara dua set, kita boleh menggunakan removeAll()kaedahnya. Sebagai contoh,
 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); ) ) 
Pengeluaran
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Perbezaan: (2)
Subset
Untuk memeriksa sama ada set adalah subset dari set lain atau tidak, kita boleh menggunakan containsAll()kaedahnya. Sebagai contoh,
 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); ) ) 
Pengeluaran
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Adakah LinkedHashSet2 adalah subset LinkedHashSet1? benar
Kaedah Lain LinkedHashSet
| Kaedah | Penerangan | 
|---|---|
clone() |  Membuat salinan LinkedHashSet |  
contains() |  Mencari LinkedHashSetelemen yang ditentukan dan mengembalikan hasil boolean |  
isEmpty() |  Memeriksa jika LinkedHashSetkosong |  
size() |  Mengembalikan ukuran LinkedHashSet |  
clear() |  Mengeluarkan semua elemen dari 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.
LinkedHashSetmaintains a linked list internally. Due to this, it maintains the insertion order of its elements.- The 
LinkedHashSetclass requires more storage thanHashSet. This is becauseLinkedHashSetmaintains linked lists internally. - The performance of 
LinkedHashSetis slower thanHashSet. It is because of linked lists present inLinkedHashSet. 
LinkedHashSet Vs. TreeSet
Here are the major differences between LinkedHashSet and TreeSet:
- The 
TreeSetkelas melaksanakanSortedSetantara muka. Itulah sebabnya elemen dalam set pokok disusun. Walau bagaimanapun,LinkedHashSetkelas hanya mengekalkan susunan kemasukan unsur-unsurnya. - A 
TreeSetbiasanya lebih perlahan daripada aLinkedHashSet. Ini kerana setiap kali elemen ditambahkan keTreeSet, harus melakukan operasi penyortiran. LinkedHashSetmembenarkan penyisipan nilai nol. Namun, kami tidak dapat memasukkan nilai nol keTreeSet.








