Dalam tutorial ini, kita akan belajar mengenai kelas Java LinkedHashSet dan kaedahnya dengan bantuan contoh.
The LinkedHashSet
kelas rangka koleksi Java memberikan fungsi kedua-dua hashtable dan struktur senarai data yang dipautkan.
Ia melaksanakan antara muka Set.
Elemen LinkedHashSet
disimpan 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.LinkedHashSet
pakej 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 LinkedHashSet
kelas 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.Iterator
pakej. 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()
kembalitrue
jika 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 LinkedHashSet
kelas 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 LinkedHashSet elemen yang ditentukan dan mengembalikan hasil boolean |
isEmpty() | Memeriksa jika LinkedHashSet kosong |
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.
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
:
- The
TreeSet
kelas melaksanakanSortedSet
antara muka. Itulah sebabnya elemen dalam set pokok disusun. Walau bagaimanapun,LinkedHashSet
kelas hanya mengekalkan susunan kemasukan unsur-unsurnya. - A
TreeSet
biasanya lebih perlahan daripada aLinkedHashSet
. Ini kerana setiap kali elemen ditambahkan keTreeSet
, harus melakukan operasi penyortiran. LinkedHashSet
membenarkan penyisipan nilai nol. Namun, kami tidak dapat memasukkan nilai nol keTreeSet
.