Java HashSet

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 HashSetkelas 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.HashSetpakej 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 HashSetkelas menyediakan pelbagai kaedah yang membolehkan kita untuk melakukan pelbagai operasi di set.

Masukkan Elemen ke HashSet

  • add() - memasukkan elemen yang ditentukan ke set
  • addAll() - 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.Iteratorpakej. 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 set
  • removeAll() - 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 HashSetkelas 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 HashSetelemen yang ditentukan dan mengembalikan hasil boolean
isEmpty() Memeriksa jika HashSetkosong
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, HashSetbiasanya 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.

HashSettidak 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.

Artikel menarik...