Menu
CoddyTech

Menelusuri Hash Map

Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 31 dari 66.

Terkadang kamu perlu memeriksa setiap pasangan kunci-nilai dalam hash map-mu, alih-alih mencari kunci tertentu. Rust menyediakan cara sederhana untuk melakukan perulangan pada semua data menggunakan for loop:

for (key, value) in &my_map {
    println!("{}: {}", key, value);
}

Perhatikan & sebelum my_map, ini membuat referensi ke hash map sehingga kamu bisa melakukan iterasi tanpa mengambil kepemilikan. Perulangan memberimu setiap pasangan key-value sebagai tuple yang bisa kamu uraikan langsung dalam deklarasi perulangan.

Berikut contoh praktis dengan daftar harga:

let mut prices = HashMap::new();
prices.insert("apple", 1.20);
prices.insert("banana", 0.80);

for (item, price) in &prices {
    println!("{} costs ${:.2}", item, price);
}

Ada satu detail penting yang perlu diingat: hash map tidak menjamin urutan iterasi tertentu. Pasangan mungkin muncul dalam urutan berbeda setiap kali kamu menjalankan program. Hal ini terjadi karena hash map mengutamakan pencarian cepat daripada mempertahankan urutan penyisipan, jadi jangan mengandalkan item muncul dalam urutan tertentu saat kamu melakukan iterasi.

challenge icon

Tantangan

Mudah

Kamu akan menerima bilangan bulat n yang menunjukkan jumlah pasangan nama siswa dan nilai yang akan diproses. Kemudian, kamu akan menerima n pasangan input: nama siswa diikuti nilai uji mereka (sebagai bilangan bulat). Buat hash map untuk menyimpan nama siswa sebagai kunci dan nilainya sebagai nilai. Setelah memasukkan semua pasangan, lakukan iterasi pada hash map dan cetak nama serta nilai setiap siswa.

Persyaratan:

  • Impor HashMap dari std::collections
  • Buat hash map mutable dengan tipe HashMap<String, i32>
  • Baca input pertama dan ubah menjadi i32 untuk mendapatkan jumlah pasangan
  • Gunakan perulangan untuk membaca n pasangan input (nama siswa, lalu nilai)
  • Masukkan setiap nama siswa dan nilainya ke dalam hash map
  • Gunakan for loop untuk melakukan iterasi pada hash map dengan &map
  • Cetak informasi setiap siswa dengan format: [name]: [score]
  • Cetak pasangan dalam urutan apa pun (hash map tidak menjamin urutan)

Input:

  • Baris pertama: Bilangan bulat n (misalnya, 3)
  • Berikutnya, n pasangan baris:
    • Nama siswa (misalnya, Alice)
    • Nilai uji sebagai bilangan bulat (misalnya, 95)

Output:

  • Satu baris untuk setiap siswa dengan format: [name]: [score]
  • Urutan baris output dapat berbeda pada setiap eksekusi kasus uji

Coba sendiri

use std::collections::HashMap;
use std::io::{self, BufRead};

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // Baca jumlah pasangan nama siswa dan nilai
    let n: i32 = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // Buat hash map yang dapat diubah untuk menyimpan nama dan nilai siswa
    let mut students: HashMap<String, i32> = HashMap::new();
    
    // TODO: Tulis kodemu di bawah ini
    // Baca n pasang input (nama dan nilai siswa), lalu masukkan ke dalam hash map
    
    
    
    // TODO: Telusuri hash map dan cetak nama serta nilai setiap siswa
    
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Rust online