Java LinkedHashSet

Dalam tutorial ini, kita akan belajar tentang kelas Java LinkedHashSet dan metodenya dengan bantuan contoh.

The LinkedHashSetkelas dari koleksi kerangka Java menyediakan fungsionalitas dari kedua hashtable dan struktur daftar data terkait.

Ini mengimplementasikan antarmuka Set.

Elemen LinkedHashSetdisimpan 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.LinkedHashSetpaket 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 LinkedHashSetkelas 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 ditautkan
  • addAll() - 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.Iteratorpaketnya. 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()mengembalikan truejika ada elemen berikutnya dalam set hash tertaut
  • next() mengembalikan elemen berikutnya dalam set hash tertaut

Hapus Elemen dari HashSet

  • remove() - menghapus elemen tertentu dari kumpulan hash yang ditautkan
  • removeAll() - 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 LinkedHashSetkelas 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 LinkedHashSetelemen yang ditentukan dan mengembalikan hasil boolean
isEmpty() Memeriksa apakah LinkedHashSetkosong
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 than HashSet. This is because LinkedHashSet maintains linked lists internally.
  • The performance of LinkedHashSet is slower than HashSet. It is because of linked lists present in LinkedHashSet.

LinkedHashSet Vs. TreeSet

Here are the major differences between LinkedHashSet and TreeSet:

  • The TreeSetkelas mengimplementasikan SortedSetinterface. Itulah mengapa elemen dalam kumpulan pohon diurutkan. Namun, LinkedHashSetkelas tersebut hanya mempertahankan urutan penyisipan elemennya.
  • A TreeSetbiasanya lebih lambat dari a LinkedHashSet. Itu karena setiap kali elemen ditambahkan ke TreeSet, itu harus melakukan operasi penyortiran.
  • LinkedHashSetmemungkinkan penyisipan nilai nol. Namun, kami tidak dapat memasukkan nilai null ke TreeSet.

Artikel yang menarik...