Özet - Koleksiyonlar
- Rust kursu
- Orta seviye
- Ders 59/115
- 5 dk
HashMap ve Entry API'yi birleştirerek bir kelime sayacı yazarsın.
Koleksiyonlar özeti
HashMap: hızlı anahtar-değer, sırasız. BTreeMap: sıralı, aralık sorguları. HashSet/BTreeSet: tekil değerler ve küme işlemleri. entry API ile "yoksa ekle, varsa güncelle" tek aramada yapılır: or_insert, or_default, and_modify. Dolaşma &, &mut ya da sahiplikle yapılır; sırasız yapıların çıktısı yazdırılmadan önce sıralanmalıdır.
Gruplama
BTreeMap ve or_default birlikte, sıralı bir gruplama verir:
let mut gruplar: BTreeMap<char, Vec<&str>> = BTreeMap::new();
for k in "elma armut erik ayva kiraz".split_whitespace() {
let ilk = k.chars().next().unwrap();
gruplar.entry(ilk).or_default().push(k);
}
for (h, liste) in &gruplar {
println!("{h}: {}", liste.join(", "));
}Uygulama Baş harfe göre grupla
"elma armut erik ayva kiraz" kelimelerini BTreeMap<char, Vec<&str>> içinde baş harflerine göre grupla (or_default). Her grubu harf: kelime, kelime biçiminde ayrı satırlara yazdır.
Başlangıç kodu
use std::collections::BTreeMap;
fn main() {
// buraya yaz
}Örnek çözüm
use std::collections::BTreeMap;
fn main() {
let mut gruplar: BTreeMap<char, Vec<&str>> = BTreeMap::new();
for k in "elma armut erik ayva kiraz".split_whitespace() {
let ilk = k.chars().next().unwrap();
gruplar.entry(ilk).or_default().push(k);
}
for (h, liste) in &gruplar {
println!("{}: {}", h, liste.join(", "));
}
}Beklenen çıktı
a: armut, ayva e: elma, erik k: kiraz
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir sözlükte kelimeleri baş harfe göre gruplamak için en uygun değer türü hangisi?
- Vec<&str> Doğru cevap
- &str
- usize
- bool
Açıklama: Her anahtara birden çok kelime düşer; entry(..).or_default().push(k) deseni bunu doğal biçimde kurar.
2 Varsayılanla başlat
gruplar.entry(ilk).____().push(k);
gruplar.entry(ilk).or_default().push(k);
Açıklama: or_default yoksa boş bir Vec koyar.
3 Grubun özeti
| Kavram | Anlamı |
|---|---|
HashMap |
Hızlı, sırasız |
BTreeMap |
Sıralı anahtarlar |
HashSet |
Tekil değerler |
entry |
Tek aramada güncelleme |