Dalam tutorial ini, kita akan belajar tentang kelas Java LinkedHashSet dan metodenya dengan bantuan contoh.
The LinkedHashSet
kelas dari koleksi kerangka Java menyediakan fungsionalitas dari kedua hashtable dan struktur daftar data terkait.
Ini mengimplementasikan antarmuka Set.
Elemen LinkedHashSet
disimpan dalam tabel hash yang mirip dengan HashSet.
Namun, set hash tertaut mempertahankan daftar tertaut ganda secara internal untuk semua elemennya. Daftar tertaut menentukan urutan elemen yang disisipkan dalam tabel hash.
Buat LinkedHashSet
Untuk membuat kumpulan hash yang ditautkan, kita harus mengimpor java.util.LinkedHashSet
paket terlebih dahulu.
Setelah kita mengimpor paket, berikut adalah bagaimana kita dapat membuat set hash yang terhubung di Java.
// LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet numbers = new LinkedHashSet(8, 0.75);
Di sini, kami telah membuat kumpulan hash tertaut bernama angka.
Perhatikan, bagiannya new LinkedHashSet(8, 0.75)
. Di sini, parameter pertama adalah kapasitas dan parameter kedua adalah loadFactor .
- kapasitas - Kapasitas set hash ini adalah 8. Artinya, dapat menyimpan 8 elemen.
- loadFactor - Faktor beban set hash ini adalah 0,6. Ini berarti, setiap kali tabel hash kita terisi 60%, elemen dipindahkan ke tabel hash baru dua kali lipat ukuran tabel hash asli.
Kapasitas default dan faktor beban
Anda dapat membuat kumpulan hash yang ditautkan tanpa menentukan kapasitas dan faktor muatnya. Sebagai contoh,
// LinkedHashSet with default capacity and load factor LinkedHashSet numbers1 = new LinkedHashSet();
Secara default,
- kapasitas set hash yang ditautkan adalah 16
- faktor beban akan menjadi 0,75
Membuat LinkedHashSet dari Koleksi Lain
Berikut adalah bagaimana kita bisa membuat set hash tertaut yang berisi semua elemen dari koleksi lainnya.
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); ) )
Keluaran
ArrayList: (2, 4) LinkedHashSet: (2, 4)
Metode LinkedHashSet
The LinkedHashSet
kelas menyediakan metode yang memungkinkan kita untuk melakukan berbagai operasi pada hash set terkait.
Sisipkan Elemen ke LinkedHashSet
add()
- menyisipkan elemen yang ditentukan ke set hash yang ditautkanaddAll()
- menyisipkan semua elemen dari koleksi yang ditentukan ke set hash yang ditautkan
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); ) )
Keluaran
LinkedHashSet: (2, 4, 6) LinkedHashSet Baru: (2, 4, 6, 5)
Akses Elemen LinkedHashSet
Untuk mengakses elemen dari himpunan hash yang ditautkan, kita dapat menggunakan iterator()
metode ini. Untuk menggunakan metode ini, kita harus mengimpor java.util.Iterator
paketnya. 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(", "); ) ) )
Keluaran
LinkedHashSet: (2, 5, 6) LinkedHashSet menggunakan Iterator: 2, 5, 6,
Catatan :
hasNext()
mengembalikantrue
jika ada elemen berikutnya dalam set hash tertautnext()
mengembalikan elemen berikutnya dalam set hash tertaut
Hapus Elemen dari HashSet
remove()
- menghapus elemen tertentu dari kumpulan hash yang ditautkanremoveAll()
- menghapus semua elemen dari set hash yang ditautkan
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); ) )
Keluaran
LinkedHashSet: (2, 5, 6) Apakah 5 dihapus? true Apakah semua elemen dihilangkan? benar
Atur Operasi
Berbagai metode LinkedHashSet
kelas juga dapat digunakan untuk melakukan berbagai operasi set.
Persatuan Set
Dua melakukan penyatuan antara dua set, kita bisa menggunakan addAll()
metode ini. 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); ) )
Keluaran
LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Union adalah: (1, 3, 2, 4)
Persimpangan Set
Untuk melakukan perpotongan antara dua set, kita dapat menggunakan retainAll()
metode ini. 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); ) )
Keluaran
LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Intersection adalah: (2)
Perbedaan Set
Untuk menghitung selisih kedua himpunan tersebut, kita dapat menggunakan removeAll()
metode tersebut. 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); ) )
Keluaran
LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (1, 3, 5) Perbedaan: (2)
Subset
Untuk memeriksa apakah suatu himpunan adalah bagian dari himpunan lain atau tidak, kita dapat menggunakan containsAll()
metode ini. 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); ) )
Keluaran
LinkedHashSet1: (1, 2, 3, 4) LinkedHashSet2: (2, 3) Apakah LinkedHashSet2 adalah bagian dari LinkedHashSet1? benar
Metode Lain dari LinkedHashSet
metode | Deskripsi |
---|---|
clone() | Membuat salinan dari LinkedHashSet |
contains() | Mencari LinkedHashSet elemen yang ditentukan dan mengembalikan hasil boolean |
isEmpty() | Memeriksa apakah LinkedHashSet kosong |
size() | Mengembalikan ukuran file LinkedHashSet |
clear() | Menghapus 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 mengimplementasikanSortedSet
interface. Itulah mengapa elemen dalam kumpulan pohon diurutkan. Namun,LinkedHashSet
kelas tersebut hanya mempertahankan urutan penyisipan elemennya. - A
TreeSet
biasanya lebih lambat dari aLinkedHashSet
. Itu karena setiap kali elemen ditambahkan keTreeSet
, itu harus melakukan operasi penyortiran. LinkedHashSet
memungkinkan penyisipan nilai nol. Namun, kami tidak dapat memasukkan nilai null keTreeSet
.