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.
Tantangan
MudahKamu 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
HashMapdaristd::collections - Buat hash map mutable dengan tipe
HashMap<String, i32> - Baca input pertama dan ubah menjadi
i32untuk mendapatkan jumlah pasangan - Gunakan perulangan untuk membaca
npasangan input (nama siswa, lalu nilai) - Masukkan setiap nama siswa dan nilainya ke dalam hash map
- Gunakan
forloop 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,
npasangan baris:- Nama siswa (misalnya,
Alice) - Nilai uji sebagai bilangan bulat (misalnya,
95)
- Nama siswa (misalnya,
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
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Alur Kontrol Lanjutan
Ekspresi 'match'Mencocokkan Beberapa NilaiMencocokkan RentangEkspresi 'if let'Perulangan sebagai EkspresiRangkuman, Parser Perintah Sederhana4Mengelompokkan Data dengan Struct
Apa Itu Struct?Ringkasan StructMengakses Field StructStruct yang Dapat DiubahStruct sebagai Parameter FungsiStruct TupleRangkuman: Buat Struct Buku2Pengantar Vektor
Apa Itu Vektor?Membuat VektorMenambahkan Elemen dengan pushMengakses Elemen VektorMelakukan Iterasi pada VektorIterasi MutableMenghapus ElemenRangkuman: Pelacak Skor Dasar5Pasangan Kunci-Nilai dengan Hash Map
Apa Itu Hash Map?Membuat Hash MapMenyisipkan Pasangan Kunci-NilaiMengakses NilaiMenelusuri Hash MapMemperbarui NilaiMenghapus PasanganRangkuman: Penghitung Kata8Proyek: Inventaris Barang Sederhana
Menyiapkan ProyekMenambahkan BarangMemeriksa StokMenjual BarangMenyatukan Semuanya3Daftar Tugas Baris Perintah
Penyiapan ProyekMenambahkan TugasMelihat Semua TugasMenghapus TugasKode AkhirLatihan sendiri: Compiler Rust online