Dalam tutorial ini, kita akan belajar mengenai kelas Java HashSet. Kami akan belajar mengenai kaedah dan operasi set hash yang berbeza dengan bantuan contoh.
The HashSet
kelas rangka Collections Java menyediakan kefungsian struktur data jadual hash.
Ia melaksanakan antara muka Set.
Membuat HashSet
Untuk membuat set hash, kita mesti mengimport java.util.HashSet
pakej terlebih dahulu.
Sebaik sahaja kami mengimport pakej, berikut adalah bagaimana kita dapat 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, bahagian baru HashSet(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 set hash kami diisi sebanyak 60%, elemen-elemen tersebut dipindahkan ke tabel hash baru dua kali ganda dari ukuran hash table yang asli.
Kapasiti lalai dan faktor beban
Anda boleh membuat jadual hash tanpa menentukan kapasiti dan faktor muatannya. Sebagai contoh,
// HashSet with default capacity and load factor HashSet numbers1 = new HashSet();
Secara lalai,
- kapasiti set hash akan 16
- faktor beban akan menjadi 0.75
Kaedah HashSet
The HashSet
kelas menyediakan pelbagai kaedah yang membolehkan kita untuk melakukan pelbagai operasi di set.
Masukkan Elemen ke HashSet
add()
- memasukkan elemen yang ditentukan ke setaddAll()
- memasukkan semua elemen 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); ) )
Pengeluaran
Set Hash: (2, 4, 6) Set Hash Baru: (2, 4, 5, 6)
Akses Elemen HashSet
Untuk mengakses elemen set hash, kita dapat menggunakan iterator()
kaedahnya. Untuk menggunakan kaedah ini, kita mesti mengimport java.util.Iterator
pakej. 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(", "); ) ) )
Pengeluaran
HashSet: (2, 5, 6) HashSet menggunakan Iterator: 2, 5, 6,
Buang Elemen
remove()
- mengeluarkan elemen yang ditentukan dari setremoveAll()
- membuang 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); ) )
Pengeluaran
HashSet: (2, 5, 6) Adakah 5 dikeluarkan? benar Adakah semua unsur dikeluarkan? benar
Tetapkan Operasi
Pelbagai kaedah HashSet
kelas juga boleh digunakan untuk melakukan pelbagai operasi set.
Kesatuan Set
Untuk melakukan penyatuan antara dua set, kita boleh menggunakan addAll()
kaedah. 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); ) )
Pengeluaran
HashSet1: (2, 4) HashSet2: (1, 3) Kesatuan adalah: (1, 2, 3, 4)
Persimpangan Set
Untuk melakukan persimpangan antara dua set, kita boleh menggunakan retainAll()
kaedahnya. 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); ) )
Pengeluaran
HashSet1: (2, 3) HashSet2: (2, 4) Persimpangan adalah: (2)
Perbezaan Set
Untuk mengira perbezaan antara dua set, kita boleh menggunakan removeAll()
kaedahnya. 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); ) )
Pengeluaran
HashSet1: (2, 3, 5) HashSet2: (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.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); ) )
Pengeluaran
HashSet1: (1, 2, 3, 4) HashSet2: (2, 3) Adakah HashSet2 adalah subset dari HashSet1? benar
Kaedah Lain HashSet
Kaedah | Penerangan |
---|---|
clone() | Membuat salinan HashSet |
contains() | Mencari HashSet elemen yang ditentukan dan mengembalikan hasil boolean |
isEmpty() | Memeriksa jika HashSet kosong |
size() | Mengembalikan ukuran HashSet |
clear() | Mengeluarkan semua elemen dari HashSet |
Untuk mengetahui lebih lanjut mengenai kaedah HashSet, kunjungi Java HashSet (dokumentasi Java rasmi).
Mengapa HashSet?
Di Jawa, HashSet
biasanya digunakan jika kita harus mengakses elemen secara rawak. Ini kerana elemen dalam jadual hash diakses menggunakan kod hash.
Kod hash elemen adalah identiti unik yang membantu mengenal pasti elemen dalam jadual hash.
HashSet
tidak boleh mengandungi unsur pendua. Oleh itu, setiap elemen set hash mempunyai kod hash yang unik.
Catatan: HashSet tidak diselaraskan. Iaitu jika banyak utas mengakses set hash pada masa yang sama dan salah satu utas mengubah set hash. Maka ia mesti disegerakkan secara luaran.