Java HashSet Class: A Beginner's Guide

Pengenalan

Helo, pemaju Java masa depan! Hari ini, kita akan menyelam ke atas dunia yang menarik HashSet di Java. Jangan khawatir jika kamu baru dalam pemrograman; saya akan membimbing kamu melalui perjalanan ini langkah demi langkah, sama seperti yang saya lakukan untuk pelbagai pelajar selama tahun tahun mengajar saya. Pikirkan HashSet sebagai rak penyimpanan yang penyihir yang dapat menyimpan item yang unik - tiada pendua dibenarkan! Ia seperti memiliki rak penyimpanan khusus di mana kamu hanya boleh meletakkan satu rakam bagi setiap jenis rakaman. Mari kita mula!

Java - HashSet

Pengisytiharan Kelas

Di Java, HashSet adalah sebahagian daripada Java Collections Framework. Untuk menggunakannya, kita perlu untuk mengimport dulu:

import java.util.HashSet;

Pengisytiharan asas HashSet adalah seperti berikut:

HashSet<E> hs = new HashSet<E>();

Di sini, 'E' adalah rakam pengganti untuk jenis elemen yang kamu ingin simpan di atas HashSet kamu. Sebagai contoh, jika kamu ingin menyimpan rakaman:

HashSet<String> fruitBasket = new HashSet<String>();

Parameter

Apabila membuat HashSet, kamu boleh menetapkan dua parameter pilihan:

  1. Kapasiti awal: Bilangan " rak " yang HashSet akan gunakan untuk menyimpan elemen.
  2. Faktor muat: ukuran penyataan bagaimana penuh HashSet boleh menjadi sebelum ia secara automatik meningkatkan saiz.

Jangan bimbang terlalu banyak tentang ini untuk masa ini. Pikirkan mereka sebagai tetapan tingkat lanjut untuk rak penyimpanan penyihir kamu!

Konstruktor Kelas

HashSet menyediakan empat konstruktor. Mari kita lihat setiap satu daripada mereka:

// Konstruktor 1: Membuat HashSet kosong dengan kapasiti awal default (16) dan faktor muat (0.75)
HashSet<String> set1 = new HashSet<>();

// Konstruktor 2: Membuat HashSet yang mengandungi elemen dari koleksi yang dinyatakan
Collection<String> collection = Arrays.asList("Apple", "Banana", "Cherry");
HashSet<String> set2 = new HashSet<>(collection);

// Konstruktor 3: Membuat HashSet kosong dengan kapasiti awal yang dinyatakan dan faktor muat default (0.75)
HashSet<String> set3 = new HashSet<>(20);

// Konstruktor 4: Membuat HashSet kosong dengan kapasiti awal dan faktor muat yang dinyatakan
HashSet<String> set4 = new HashSet<>(20, 0.8f);

Method Kelas

Berikut adalah jadual bagi method yang paling umum digunakan oleh HashSet:

Method Keterangan
add(E e) Menambahkan elemen yang dinyatakan kepada set ini jika ia belum wujud
clear() Menghapuskan semua elemen dari set ini
contains(Object o) Kembali true jika set ini mengandungi elemen yang dinyatakan
isEmpty() Kembali true jika set ini tidak mengandungi elemen
remove(Object o) Menghapuskan elemen yang dinyatakan dari set ini jika ia wujud
size() Kembali jumlah elemen di atas set ini

Method Waris

HashSet warisi method dari kelas induknya. Beberapa yang kena mention adalah:

  • Dari Set: addAll(), containsAll(), equals(), hashCode(), removeAll(), retainAll()
  • Dari Collection: iterator(), toArray()
  • Dari Object: clone(), finalize(), getClass(), notify(), notifyAll(), wait()

Contoh Penambahan Elemen kepada HashSet

Mari kita tempatkan pengetahuan kita ke atas praktek dengan contoh yang menyenangkan. Bayangkan kita membuat program untuk menyimpan rakaman es krim unik di atas kedai kita:

import java.util.HashSet;

public class IceCreamShop {
public static void main(String[] args) {
// Membuat HashSet baru untuk menyimpan rakaman es krim
HashSet<String> flavors = new HashSet<>();

// Menambahkan beberapa rakaman
flavors.add("Vanilla");
flavors.add("Chocolate");
flavors.add("Strawberry");
flavors.add("Mint Chip");

// Cuba menambahkan pendua
boolean added = flavors.add("Vanilla");

System.out.println("Vanilla ditambah lagi? " + added);
System.out.println("Rakaman es krim kita: " + flavors);
System.out.println("Kami ada " + flavors.size() + " rakaman unik!");

// Periksa jika kami ada rakaman tertentu
String searchFlavor = "Rocky Road";
if (flavors.contains(searchFlavor)) {
System.out.println("Ya, kami ada " + searchFlavor + "!");
} else {
System.out.println("Maaf, kami tidak ada " + searchFlavor + ".");
}

// Menghapuskan rakaman
flavors.remove("Strawberry");
System.out.println("Rakaman dikemas kini selepas menghapuskan Strawberry: " + flavors);
}
}

Output

Apabila kamu menjalankan program ini, kamu akan lihat seperti berikut:

Vanilla ditambah lagi? false
Rakaman es krim kita: [Vanilla, Mint Chip, Chocolate, Strawberry]
Kami ada 4 rakaman unik!
Maaf, kami tidak ada Rocky Road.
Rakaman dikemas kini selepas menghapuskan Strawberry: [Vanilla, Mint Chip, Chocolate]

Mari kita kongsi apa yang terjadi:

  1. Kami membuat HashSet yang dipanggil flavors untuk menyimpan rakaman es krim kita.
  2. Kami menambah empat rakaman: Vanilla, Chocolate, Strawberry, dan Mint Chip.
  3. Kami cuba untuk menambah Vanilla lagi, tetapi add() kembali false kerana HashSet tidak membenarkan pendua.
  4. Kami mencetakkan semua rakaman kita. Perhatikan susunan mungkin berbeza dari cara kita menambahkannya - HashSet tidak menjaga susunan penyisipan.
  5. Kami memeriksa jika kami ada rakaman Rocky Road menggunakan contains(). Kami tidak, jadi ia mencetakkan mesej "maaf".
  6. Akhirnya, kami menghapuskan Strawberry dan mencetakkan rakaman yang dikemas kini.

Dan itu adalah! Kamu baru saja membuat HashSet pertama kamu dan menggunakan beberapa method pentingnya. Ingat, HashSet adalah sangat baik apabila kamu perlu menyimpan elemen unik dan tidak peduli tentang susunan. Ia seperti rak rakaman di mana setiap rakaman adalah warna yang berbeza - kamu boleh dengan mudah memeriksa jika kamu ada rakaman tertentu, tetapi kamu tidak boleh mengawal susunan mereka keluar apabila kamu kongkaskan rak itu.

Apabila kamu teruskan perjalanan Java kamu, kamu akan menemukan HashSet sangat berguna dalam banyak senario. Teruskan untuk berlatih, dan tidak lama lagi kamu akan menjadi pakar HashSet! Selamat coding!

Credits: Image by storyset