0Pricing
Learn Rust Coding · Pelajaran

Membangun HashMap

Sisipkan dan cari berdasarkan kunci.

Membangun HashMap adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 1 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 HashMap?

HashMap menyimpan data sebagai pasangan kunci-nilai. Anda mencari data berdasarkan kunci, bukan indeks.

Bayangkan buku telepon: nama (kunci) dipetakan ke nomor (nilai). HashMaps sangat cocok saat Anda memerlukan pencarian cepat berdasarkan kunci yang bermakna.

Mengimpor HashMap

Berbeda dari Vec dan String, HashMap tidak tersedia dalam prelude. Anda harus memasukkannya ke dalam scope.

Tambahkan baris use di bagian atas file Anda. Ini membuat nama tersebut tersedia di seluruh modul.

use std::collections::HashMap;

fn main() {
    let scores: HashMap<String, i32> = HashMap::new();
    println!("empty map len: {}", scores.len());
}

Memasukkan Pasangan

Gunakan insert untuk menambahkan kunci dan nilainya. Jika kunci sudah ada, nilai lama akan diganti.

Map harus dideklarasikan sebagai mut agar dapat dilakukan penyisipan.

use std::collections::HashMap;

fn main() {
    let mut scores = HashMap::new();
    scores.insert("Alice", 50);
    scores.insert("Bob", 30);
    println!("{} players", scores.len());
}

Inferensi Tipe

Anda jarang perlu menulis tipenya. Rust menyimpulkan HashMap<&str, i32> dari pemanggilan insert pertama.

Di sini, kuncinya adalah potongan string dan nilainya adalah bilangan bulat, semuanya ditentukan berdasarkan penggunaannya.

use std::collections::HashMap;

fn main() {
    let mut ages = HashMap::new();
    ages.insert("Sam", 28);
    ages.insert("Mia", 34);
    println!("Sam is {}", ages["Sam"]);
}

Mendapatkan Nilai

Metode get mengembalikan Option. Anda mendapatkan Some(&value) jika kunci ada, atau None jika tidak ada.

Dengan demikian, Anda harus menangani kasus data yang tidak ditemukan secara aman.

use std::collections::HashMap;

fn main() {
    let mut scores = HashMap::new();
    scores.insert("Alice", 50);
    match scores.get("Alice") {
        Some(v) => println!("score: {}", v),
        None => println!("no score"),
    }
}

Pengindeksan vs get

Anda dapat menggunakan indeks dengan map[key], tetapi ini menyebabkan kepanikan jika kunci tidak ditemukan.

Utamakan get saat kunci mungkin tidak ada. Gunakan pengindeksan hanya jika Anda yakin kunci tersebut ada.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    m.insert("x", 1);
    // m["y"] would panic!
    let v = m.get("y").copied().unwrap_or(0);
    println!("y = {}", v);
}

Memperbarui Nilai

Memanggil insert dengan kunci yang sudah ada akan menimpa nilai lama.

Nilai sebelumnya dikembalikan (dibungkus dalam Option) sehingga Anda dapat memeriksanya jika diperlukan.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    m.insert("k", 1);
    let old = m.insert("k", 9);
    println!("old = {:?}, now = {}", old, m["k"]);
}

Memeriksa Kunci

Gunakan contains_key untuk menguji apakah suatu kunci ada tanpa mengambil nilainya.

Metode ini mengembalikan bool biasa, yang praktis digunakan dalam kondisi if.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    m.insert("on", true);
    if m.contains_key("on") {
        println!("key exists");
    }
}

Menghapus Entri

Metode remove menghapus kunci dan mengembalikan nilainya sebagai Option.

Jika kunci tidak ada, Anda mendapatkan None, sehingga penghapusan selalu aman.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    m.insert("a", 1);
    let removed = m.remove("a");
    println!("removed {:?}, len {}", removed, m.len());
}

Melakukan Iterasi pada Map

Perulangan for pada HashMap menghasilkan tupel (key, value) berdasarkan referensi.

Perhatikan bahwa urutannya tidak ditentukan dan dapat berubah antarpelaksanaan, karena hashing mengacak penempatan.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    m.insert("a", 1);
    m.insert("b", 2);
    for (k, v) in &m {
        println!("{} -> {}", k, v);
    }
}

Kepemilikan Kunci

Saat Anda memasukkan nilai yang memiliki kepemilikan, seperti String, map mengambil kepemilikannya.

Setelah penyisipan, Anda tidak dapat menggunakan variabel tersebut lagi kecuali Anda telah menggandakannya terlebih dahulu.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    let name = String::from("Alice");
    m.insert(name, 50);
    // name is moved here; m owns it now
    println!("{}", m["Alice"]);
}

Pemeriksaan Singkat

Anda menginginkan suatu nilai, tetapi kuncinya mungkin tidak ada.

Rangkuman

Anda telah mempelajari cara membuat HashMap, memasukkan pasangan, dan mencari nilai dengan get atau pengindeksan.

Anda juga mempelajari contains_key, remove, iterasi, serta cara map mengambil kepemilikan kunci yang dimasukkan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membangun HashMap” gratis?

Ya — teks lengkap “Membangun HashMap” 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 “Membangun HashMap”?

Sisipkan dan cari berdasarkan kunci. 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 1 dari 4.

Berapa lama pelajaran “Membangun HashMap” 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