Pelajaran modul (1/2)
Koleksi dan HashMap
Koleksi adalah struktur data yang mampu menyimpan banyak nilai. Berbeda dengan tipe array dan tuple primitif, data yang direferensikan oleh koleksi ini disimpan di heap, yang berarti jumlah data tidak perlu diketahui pada waktu kompilasi dan dapat bertambah atau menyusut secara dinamis selama eksekusi program.
Dua koleksi yang paling umum digunakan di Rust adalah vektor (Vec<T>) dan peta nilai kunci (HashMap<K, V>).
Vektor (Vec<T>)
Vektor memungkinkan Anda menyimpan lebih dari satu nilai bertipe sama dalam satu struktur data yang menempatkan semua nilai bersebelahan dalam memori:
fn main() {
// Creating an empty mutable vector
let mut v: Vec<i32> = Vec::new();
// Or using the vec! macro
let mut v2 = vec![1, 2, 3];
// Appending elements
v.push(5);
v.push(6);
// Accessing elements by index
let third = v2[2];
println!("The third element is: {}", third);
}Peta Hash (HashMap<K, V>)
Koleksi HashMap<K, V> menyimpan pemetaan kunci bertipe K ke nilai bertipe V. Ini beroperasi melalui fungsi hashing, yang menentukan bagaimana kunci dan nilai ini ditempatkan di memori. Ini sangat berguna ketika Anda ingin mencari data bukan berdasarkan indeks numerik, namun berdasarkan kunci (seperti nama atau ID).
use std::collections::HashMap;
fn main() {
let mut scores = HashMap::new();
// Inserting key-value pair
scores.insert(String::from("Blue"), 10);
scores.insert(String::from("Yellow"), 50);
// Reading a value (returns an Option<&V>)
let team_name = String::from("Blue");
let score = scores.get(&team_name);
match score {
Some(val) => println!("Score: {}", val),
None => println!("No score found."),
}
}Cobalah sendiri
Latihan 1: Operasi Dasar pada Vec
Deklarasikan vektor bilangan bulat yang dapat diubah bernama v menggunakan Vec::new(). Tambahkan elemen 10, 20, dan 30 secara berurutan menggunakan metode push. Terakhir, cetak elemen pertama dari vektor (indeks 0) menggunakan println!.
Tunjukkan petunjuk
Gunakan `let mut v = Vec::new();` untuk menginisialisasi vektor, masukkan elemen dengan `v.push(value)` dan akses dengan `v[0]`.
Solusi tersedia setelah 3 upaya
Latihan 2: Skor Pengguna dengan HashMap
Impor std::koleksi::HashMap. Dalam fungsi utama, deklarasikan skor bernama HashMap yang dapat diubah untuk menyimpan kunci String dan nilai i32. Masukkan skor 50 untuk pengguna 'Alice'. Ekstrak skor dengan aman menggunakan metode get dan unwrap() untuk mencetaknya.
Tunjukkan petunjuk
Jangan lupa `gunakan std::collections::HashMap;`. Sisipkan dengan `scores.insert(String::from("Alice"), 50);`dan ambil nilainya dengan`.get("Alice").unwrap()`.
Solusi tersedia setelah 3 upaya
Latihan 3: Menggandakan Nilai dalam Vektor
Definisikan fungsi bernama double_values yang menerima referensi ke potongan bilangan bulat &[i32] dan mengembalikan Vec<i32> baru yang berisi elemen yang sama dikalikan 2.
Tunjukkan petunjuk
Fungsi tersebut harus mengulangi elemen irisan dan memasukkannya dikalikan 2 ke dalam vektor baru untuk dikembalikan.
Solusi tersedia setelah 3 upaya