Java HashSet

Dalam tutorial ini, kita akan belajar tentang kelas Java HashSet. Kita akan belajar tentang metode dan operasi set hash yang berbeda dengan bantuan contoh.

The HashSetkelas kerangka Java Collections menyediakan fungsi dari struktur data tabel hash.

Ini mengimplementasikan antarmuka Set.

Membuat HashSet

Untuk membuat set hash, kita harus mengimpor java.util.HashSetpaketnya terlebih dahulu.

Setelah kami mengimpor paket, berikut adalah cara membuat set hash di Java.

 // HashSet with 8 capacity and 0.75 load factor HashSet numbers = new HashSet(8, 0.75); 

Di sini, kami telah membuat set hash bernama numbers.

Perhatikan, bagian baru HashSet(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 set hash kita terisi 60%, elemen dipindahkan ke tabel hash baru dua kali lipat ukuran tabel hash asli.

Kapasitas default dan faktor beban

Tabel hash dapat dibuat tanpa menentukan kapasitas dan faktor muatnya. Sebagai contoh,

 // HashSet with default capacity and load factor HashSet numbers1 = new HashSet(); 

Secara default,

  • kapasitas set hash akan menjadi 16
  • faktor beban akan menjadi 0,75

Metode HashSet

The HashSetkelas menyediakan berbagai metode yang memungkinkan kita untuk melakukan berbagai operasi di set.

Masukkan Elemen ke HashSet

  • add() - menyisipkan elemen yang ditentukan ke set
  • addAll() - menyisipkan semua elemen dari koleksi yang ditentukan ke set

Sebagai contoh,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet evenNumber = new HashSet(); // Using add() method evenNumber.add(2); evenNumber.add(4); evenNumber.add(6); System.out.println("HashSet: " + evenNumber); HashSet numbers = new HashSet(); // Using addAll() method numbers.addAll(evenNumber); numbers.add(5); System.out.println("New HashSet: " + numbers); ) ) 

Keluaran

 HashSet: (2, 4, 6) HashSet Baru: (2, 4, 5, 6) 

Akses Elemen HashSet

Untuk mengakses elemen set hash, kita bisa menggunakan iterator()metode. Untuk menggunakan metode ini, kita harus mengimpor java.util.Iteratorpaketnya. Sebagai contoh,

 import java.util.HashSet; import java.util.Iterator; class Main ( public static void main(String() args) ( HashSet numbers = new HashSet(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: " + numbers); // Calling iterator() method Iterator iterate = numbers.iterator(); System.out.print("HashSet using Iterator: "); // Accessing elements while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) ) 

Keluaran

 HashSet: (2, 5, 6) HashSet menggunakan Iterator: 2, 5, 6, 

Hapus Elemen

  • remove() - menghapus elemen tertentu dari set
  • removeAll() - menghapus semua elemen dari set

Sebagai contoh,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet numbers = new HashSet(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: " + numbers); // Using 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

HashSet: (2, 5, 6) Apakah 5 dihapus? true Apakah semua elemen dihilangkan? benar

Atur Operasi

Berbagai metode HashSetkelas juga dapat digunakan untuk melakukan berbagai operasi set.

Persatuan Set

Untuk melakukan penyatuan antara dua set, kita bisa menggunakan addAll()metode ini. Sebagai contoh,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet evenNumbers = new HashSet(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("HashSet1: " + evenNumbers); HashSet numbers = new HashSet(); numbers.add(1); numbers.add(3); System.out.println("HashSet2: " + numbers); // Union of two set numbers.addAll(evenNumbers); System.out.println("Union is: " + numbers); ) ) 

Keluaran

 HashSet1: (2, 4) HashSet2: (1, 3) Union adalah: (1, 2, 3, 4) 

Persimpangan Set

Untuk melakukan perpotongan antara dua set, kita dapat menggunakan retainAll()metode ini. Sebagai contoh

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet primeNumbers = new HashSet(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("HashSet1: " + primeNumbers); HashSet evenNumbers = new HashSet(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("HashSet2: " + evenNumbers); // Intersection of two sets evenNumbers.retainAll(primeNumbers); System.out.println("Intersection is: " + evenNumbers); ) ) 

Keluaran

 HashSet1: (2, 3) HashSet2: (2, 4) Intersection adalah: (2) 

Perbedaan Set

Untuk menghitung selisih kedua himpunan tersebut, kita dapat menggunakan removeAll()metode tersebut. Sebagai contoh,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet primeNumbers = new HashSet(); primeNumbers.add(2); primeNumbers.add(3); primeNumbers.add(5); System.out.println("HashSet1: " + primeNumbers); HashSet oddNumbers = new HashSet(); oddNumbers.add(1); oddNumbers.add(3); oddNumbers.add(5); System.out.println("HashSet2: " + oddNumbers); // Difference between HashSet1 and HashSet2 primeNumbers.removeAll(oddNumbers); System.out.println("Difference : " + primeNumbers); ) ) 

Keluaran

 HashSet1: (2, 3, 5) HashSet2: (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.HashSet; class Main ( public static void main(String() args) ( HashSet numbers = new HashSet(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); System.out.println("HashSet1: " + numbers); HashSet primeNumbers = new HashSet(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("HashSet2: " + primeNumbers); // Check if primeNumbers is a subset of numbers boolean result = numbers.containsAll(primeNumbers); System.out.println("Is HashSet2 is subset of HashSet1? " + result); ) ) 

Keluaran

HashSet1: (1, 2, 3, 4) HashSet2: (2, 3) Apakah HashSet2 adalah bagian dari HashSet1? benar

Metode HashSet Lainnya

metode Deskripsi
clone() Membuat salinan dari HashSet
contains() Mencari HashSetelemen yang ditentukan dan mengembalikan hasil boolean
isEmpty() Memeriksa apakah HashSetkosong
size() Mengembalikan ukuran file HashSet
clear() Menghapus semua elemen dari HashSet

Untuk mempelajari lebih lanjut tentang metode HashSet, kunjungi Java HashSet (dokumentasi resmi Java).

Mengapa HashSet?

Di Java, HashSetbiasanya digunakan jika kita harus mengakses elemen secara acak. Itu karena elemen dalam tabel hash diakses menggunakan kode hash.

Kode hash suatu elemen adalah identitas unik yang membantu mengidentifikasi elemen dalam tabel hash.

HashSettidak boleh berisi elemen duplikat. Karenanya, setiap elemen set hash memiliki kode hash yang unik.

Catatan: HashSet tidak disinkronkan. Yaitu jika beberapa utas mengakses kumpulan hash pada saat yang sama dan salah satu utas mengubah kumpulan hash. Maka itu harus disinkronkan secara eksternal.

Artikel yang menarik...