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 HashSet
kelas 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.HashSet
paketnya 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 HashSet
kelas menyediakan berbagai metode yang memungkinkan kita untuk melakukan berbagai operasi di set.
Masukkan Elemen ke HashSet
add()
- menyisipkan elemen yang ditentukan ke setaddAll()
- 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.Iterator
paketnya. 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 setremoveAll()
- 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 HashSet
kelas 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 HashSet elemen yang ditentukan dan mengembalikan hasil boolean |
isEmpty() | Memeriksa apakah HashSet kosong |
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, HashSet
biasanya 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.
HashSet
tidak 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.