0Pricing
Learn Rust Coding · Pelajaran

Bekerja dengan HashSet

Lacak nilai yang unik.

Bekerja dengan HashSet adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 4 pelajaran total.

Apa Itu HashSet?

HashSet menyimpan kumpulan nilai yang unik. Tidak ada duplikat dan tidak ada kunci, hanya anggota.

HashSet sangat cocok untuk menjawab satu pertanyaan dengan cepat: "apakah saya pernah melihat nilai ini sebelumnya?"

Membuat Set

Seperti HashMap, HashSet berada di dalam std::collections dan memerlukan impor use.

Buat set kosong dengan HashSet::new() dan deklarasikan sebagai mut agar dapat menambahkan item.

use std::collections::HashSet;

fn main() {
    let mut s: HashSet<i32> = HashSet::new();
    s.insert(1);
    s.insert(2);
    println!("size: {}", s.len());
}

Menyisipkan dan Menangani Duplikat

Metode insert mengembalikan bool: true jika nilainya baru, dan false jika sudah ada.

Menyisipkan duplikat tidak melakukan apa-apa, sehingga set otomatis tetap unik.

use std::collections::HashSet;

fn main() {
    let mut s = HashSet::new();
    println!("{}", s.insert(5));
    println!("{}", s.insert(5));
    println!("len = {}", s.len());
}

Pengujian Keanggotaan

Gunakan contains untuk memeriksa apakah suatu nilai ada di dalam set. Metode ini mengembalikan bool.

Inilah alasan paling umum untuk menggunakan set: pencarian yang cepat dan jelas.

use std::collections::HashSet;

fn main() {
    let mut s = HashSet::new();
    s.insert("red");
    s.insert("blue");
    println!("has red? {}", s.contains("red"));
    println!("has green? {}", s.contains("green"));
}

Menghapus Anggota

Metode remove menerima suatu nilai dan mengembalikan true jika nilai tersebut ada dan berhasil dihapus.

Menghapus sesuatu yang tidak ada cukup mengembalikan false.

use std::collections::HashSet;

fn main() {
    let mut s = HashSet::new();
    s.insert(7);
    println!("{}", s.remove(&7));
    println!("{}", s.remove(&7));
}

Membangun dari Iterator

Anda dapat langsung mengumpulkan iterator nilai apa pun ke dalam HashSet.

Ini adalah cara cepat untuk menghapus duplikat: masukkan daftar yang berulang dan set akan mempertahankan setiap nilai satu kali.

use std::collections::HashSet;

fn main() {
    let nums = [1, 2, 2, 3, 3, 3];
    let unique: HashSet<i32> = nums.iter().copied().collect();
    println!("distinct: {}", unique.len());
}

Melakukan Iterasi pada Set

Lakukan perulangan pada set dengan perulangan for untuk mengunjungi setiap anggota.

Seperti pada HashMap, urutan iterasi tidak dijamin dan dapat berbeda pada setiap pelaksanaan.

use std::collections::HashSet;

fn main() {
    let s: HashSet<i32> = [10, 20, 30].into_iter().collect();
    let mut total = 0;
    for v in &s {
        total += v;
    }
    println!("sum = {}", total);
}

Union

Metode union memberikan setiap nilai yang berada di salah satu set.

Metode ini mengembalikan iterator, jadi kumpulkan hasilnya ke dalam set baru atau lakukan perulangan atasnya.

use std::collections::HashSet;

fn main() {
    let a: HashSet<i32> = [1, 2, 3].into_iter().collect();
    let b: HashSet<i32> = [3, 4].into_iter().collect();
    let u: HashSet<i32> = a.union(&b).copied().collect();
    println!("union size: {}", u.len());
}

Irisan

Metode intersection menghasilkan nilai yang ditemukan di kedua set.

Metode ini sangat cocok untuk menemukan elemen yang sama, seperti tag yang dimiliki bersama atau teman yang sama.

use std::collections::HashSet;

fn main() {
    let a: HashSet<i32> = [1, 2, 3].into_iter().collect();
    let b: HashSet<i32> = [2, 3, 4].into_iter().collect();
    let common: Vec<i32> = a.intersection(&b).copied().collect();
    println!("common count: {}", common.len());
}

Selisih

Metode difference menghasilkan nilai yang ada di set pertama, tetapi tidak ada di set kedua.

Tukar urutannya untuk mendapatkan selisih sebaliknya. Ada juga symmetric_difference untuk item yang berada tepat di salah satu set.

use std::collections::HashSet;

fn main() {
    let a: HashSet<i32> = [1, 2, 3].into_iter().collect();
    let b: HashSet<i32> = [2].into_iter().collect();
    let only_a: Vec<i32> = a.difference(&b).copied().collect();
    println!("only in a: {}", only_a.len());
}

Subset dan Saling Lepas

Gunakan is_subset untuk memeriksa apakah setiap anggota suatu set berada di set lain.

Gunakan is_disjoint untuk menguji bahwa dua set sama sekali tidak memiliki nilai yang sama. Keduanya mengembalikan bool biasa.

use std::collections::HashSet;

fn main() {
    let a: HashSet<i32> = [1, 2].into_iter().collect();
    let b: HashSet<i32> = [1, 2, 3].into_iter().collect();
    println!("a subset of b? {}", a.is_subset(&b));
}

Pemeriksaan Singkat

Anda memasukkan nilai yang sama dua kali ke dalam HashSet.

Rangkuman

Sebuah HashSet menyimpan nilai unik dengan pemeriksaan contains yang cepat.

Anda telah memasukkan, menghapus, menghilangkan duplikat melalui collect, serta menggabungkan set dengan union, intersection, dan difference.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Bekerja dengan HashSet” gratis?

Ya — teks lengkap “Bekerja dengan HashSet” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Bekerja dengan HashSet”?

Lacak nilai yang unik. Kamu berlatih Learn Rust Coding dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn Rust Coding?

Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Bekerja dengan HashSet” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn Rust Coding ini?

Ya. Setiap pelajaran Learn Rust Coding menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membangun HashMap
  2. API Entry dan Nilai Bawaan
  3. Bekerja dengan HashSet
  4. Menghitung dan Mengelompokkan
← Kembali ke Learn Rust Coding