java
Dalam tutorial ini, kita akan belajar tentang kelas Java HashSet. Kita akan belajar tentang metode dan operasi set hash yang berbeda dengan bantuan contoh.
HashSet
class framework Java Collections menyediakan fungsionalitas struktur data tabel hash.
Ini mengimplementasikan antarmuka Set.
Untuk membuat hash set, kita harus mengimpor java.util.HashSet
paket dulu.
Setelah kita mengimpor paket, berikut adalah cara membuat hash set di Java.
// HashSet with 8 capacity and 0.75 load factor
HashSet<Integer> 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 default dan faktor beban
Dimungkinkan untuk membuat tabel hash tanpa menentukan kapasitas dan faktor bebannya. Misalnya,
// HashSet with default capacity and load factor
HashSet<Integer> numbers1 = new HashSet<>();
Secara default,
HashSet
class menyediakan berbagai metode yang memungkinkan kita untuk melakukan berbagai operasi di set.
add()
- menyisipkan elemen yang ditentukan ke setaddAll()
- menyisipkan semua elemen dari koleksi yang ditentukan ke setMisalnya,
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<Integer> evenNumber = new HashSet<>();
// Using add() method
evenNumber.add(2);
evenNumber.add(4);
evenNumber.add(6);
System.out.println("HashSet: " + evenNumber);
HashSet<Integer> numbers = new HashSet<>();
// Using addAll() method
numbers.addAll(evenNumber);
numbers.add(5);
System.out.println("New HashSet: " + numbers);
}
}
Keluaran
HashSet: [2, 4, 6] New HashSet: [2, 4, 5, 6]
Untuk mengakses elemen dari hash set, kita dapat menggunakan iterator()
metode. Untuk menggunakan metode ini, kita harus mengimpor java.util.Iterator
kemasan. Misalnya,
import java.util.HashSet;
import java.util.Iterator;
class Main {
public static void main(String[] args) {
HashSet<Integer> numbers = new HashSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(6);
System.out.println("HashSet: " + numbers);
// Calling iterator() method
Iterator<Integer> 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 using Iterator: 2, 5, 6,
remove()
- menghapus elemen tertentu dari setremoveAll()
- menghapus semua elemen dari set
Misalnya,
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<Integer> 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] Is 5 removed? true Are all elements removed? true
Berbagai metode HashSet
class juga dapat digunakan untuk melakukan berbagai operasi himpunan.
Untuk melakukan penyatuan antara dua set, kita dapat menggunakan addAll()
metode. Misalnya,
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<Integer> evenNumbers = new HashSet<>();
evenNumbers.add(2);
evenNumbers.add(4);
System.out.println("HashSet1: " + evenNumbers);
HashSet<Integer> 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 is: [1, 2, 3, 4]
Untuk melakukan perpotongan antara dua himpunan, kita dapat menggunakan retainAll()
metode. Misalnya
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<Integer> primeNumbers = new HashSet<>();
primeNumbers.add(2);
primeNumbers.add(3);
System.out.println("HashSet1: " + primeNumbers);
HashSet<Integer> 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 is: [2]
Untuk menghitung selisih antara kedua himpunan, kita dapat menggunakan removeAll()
metode. Misalnya,
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<Integer> primeNumbers = new HashSet<>();
primeNumbers.add(2);
primeNumbers.add(3);
primeNumbers.add(5);
System.out.println("HashSet1: " + primeNumbers);
HashSet<Integer> 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] Difference: [2]
Untuk memeriksa apakah suatu himpunan merupakan himpunan bagian dari himpunan lain atau bukan, kita dapat menggunakan containsAll()
metode. Misalnya,
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
System.out.println("HashSet1: " + numbers);
HashSet<Integer> 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] Is HashSet2 is a subset of HashSet1? true
Metode | Deskripsi |
---|---|
clone() | Membuat salinan HashSet |
contains() | Menelusuri HashSet untuk elemen yang ditentukan dan mengembalikan hasil boolean |
isEmpty() | Memeriksa apakah HashSet kosong |
size() | Mengembalikan ukuran HashSet |
clear() | Menghapus semua elemen dari HashSet |
Untuk mempelajari lebih lanjut tentang metode HashSet, kunjungi Java HashSet (dokumentasi resmi Java).
Di Jawa, 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 mengandung elemen duplikat. Oleh karena itu, setiap elemen kumpulan 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 memodifikasi kumpulan hash. Maka itu harus disinkronkan secara eksternal.
java
Kelas Java ByteArrayOutputStream Dalam tutorial ini, kita akan belajar tentang Java ByteArrayOutputStream dan metodenya dengan bantuan contoh. ByteArrayOutputStream kelas java.io paket dapat digunakan untuk menulis larik data keluaran (dalam byte). Ini memperluas OutputStream kelas abstrak. Cat
Kelas Java PrintStream Dalam tutorial ini, kita akan belajar tentang kelas Java PrintStream dan metode print() dan printf() dengan bantuan contoh. PrintStream kelas java.io package dapat digunakan untuk menulis data keluaran dalam bentuk (teks) yang dapat dibaca secara umum alih-alih byte. Ini mem
Kelas Pembaca Java Dalam tutorial ini, kita akan belajar tentang Java Reader, subclass-nya dan metodenya dengan bantuan sebuah contoh. Reader kelas java.io package adalah superclass abstrak yang mewakili aliran karakter. Sejak Reader adalah kelas abstrak, itu tidak berguna dengan sendirinya. Namun
Biasanya, saat kita bekerja dengan Numbers, kita menggunakan tipe data primitif seperti byte, int, long, double, dll. Contoh int i = 5000; float gpa = 13.65f; double mask = 125; Namun, dalam pengembangan, kami menemukan situasi di mana kami perlu menggunakan objek alih-alih tipe data primitif. Un