HashMaps
Schlüssel-Wert-Speicher
HashMaps ist eine kostenlose Learn Rust Coding-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn Rust Coding-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.
Was ist eine HashMap?
Eine HashMap<K, V> speichert Schlüssel-Wert-Paare. Sie greifen über den Schlüssel statt über die Position auf Werte zu.
Sie müssen sie aus der Standardbibliothek importieren.
use std::collections::HashMap;
fn main() {
let map: HashMap<String, i32> = HashMap::new();
println!("{} entries", map.len());
}HashMap importieren
HashMap ist nicht im Prelude enthalten. Fügen Sie daher diese Zeile oben in Ihre Datei ein:
use std::collections::HashMap;
use std::collections::HashMap;
fn main() {
let scores: HashMap<&str, i32> = HashMap::new();
println!("empty: {}", scores.is_empty());
}Paare einfügen
Fügen Sie Einträge mit insert hinzu, indem Sie einen Schlüssel und einen Wert angeben. Die Map muss mut sein.
use std::collections::HashMap;
fn main() {
let mut scores = HashMap::new();
scores.insert("Alice", 90);
scores.insert("Bob", 85);
println!("{:?}", scores);
}Werte nachschlagen
Verwenden Sie get, um einen Wert über seinen Schlüssel zu lesen. Die Methode gibt ein Option zurück: Some(value), wenn der Wert gefunden wurde, andernfalls None.
use std::collections::HashMap;
fn main() {
let mut scores = HashMap::new();
scores.insert("Alice", 90);
match scores.get("Alice") {
Some(s) => println!("score {}", s),
None => println!("not found"),
}
}Einen Wert aktualisieren
Wenn Sie insert mit einem vorhandenen Schlüssel aufrufen, ersetzt der neue Wert den alten.
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("count", 1);
map.insert("count", 5); // overwrites
println!("{:?}", map.get("count"));
}Nur einfügen, wenn nicht vorhanden
Die entry-API mit or_insert fügt einen Standardwert nur ein, wenn der Schlüssel fehlt.
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.entry("x").or_insert(10);
map.entry("x").or_insert(99); // ignored, key exists
println!("{:?}", map.get("x"));
}Mit entry zählen
Ein klassisches Muster: Zählen Sie Vorkommen, indem Sie mit or_insert eine veränderliche Referenz abrufen und sie erhöhen.
use std::collections::HashMap;
fn main() {
let text = "a b a c b a";
let mut counts = HashMap::new();
for word in text.split_whitespace() {
let c = counts.entry(word).or_insert(0);
*c += 1;
}
println!("{:?}", counts);
}Einträge iterieren
Durchlaufen Sie eine HashMap, um jedes Schlüssel-Wert-Paar zu besuchen. Die Reihenfolge ist nicht garantiert.
use std::collections::HashMap;
fn main() {
let mut ages = HashMap::new();
ages.insert("Tom", 30);
ages.insert("Sue", 25);
for (name, age) in &ages {
println!("{} is {}", name, age);
}
}Einträge entfernen
Löschen Sie ein Paar mit remove. Die Methode gibt den entfernten Wert als Option zurück.
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("key", 42);
let removed = map.remove("key");
println!("removed {:?}, len {}", removed, map.len());
}Auf einen Schlüssel prüfen
Verwenden Sie contains_key, um zu prüfen, ob ein Schlüssel vorhanden ist, ohne seinen Wert abzurufen.
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("on", true);
println!("{}", map.contains_key("on"));
println!("{}", map.contains_key("off"));
}Standardwert mit unwrap_or
Beim Lesen können Sie mit unwrap_or einen Ersatzwert angeben, statt das Option abzugleichen.
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("a", 1);
let value = map.get("missing").unwrap_or(&0);
println!("{}", value);
}Kurze Überprüfung
Rufen Sie sich ins Gedächtnis, wie HashMap-Suchen funktionieren.
Zusammenfassung
HashMaps in Rust:
HashMap<K, V>speichert Schlüssel-Wert-Paare; importieren Sie sie ausstd::collections.insertfügt hinzu oder überschreibt;getgibt ein Option zurück.entry().or_insert()fügt nur ein, wenn der Schlüssel fehlt.- Iterieren Sie mit
for (k, v) in &map.
use std::collections::HashMap;
fn main() {
let mut inventory = HashMap::new();
inventory.insert("apples", 3);
*inventory.entry("apples").or_insert(0) += 2;
println!("{:?}", inventory.get("apples"));
}Häufig gestellte Fragen
Ist die Lektion „HashMaps“ kostenlos?
Ja — der vollständige Text von „HashMaps“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn Rust Coding-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „HashMaps“?
Schlüssel-Wert-Speicher Du übst Learn Rust Coding mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn Rust Coding zu starten?
Keine Vorkenntnisse erforderlich. Learn Rust Coding auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „HashMaps“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn Rust Coding-Lektion Code schreiben und ausführen?
Ja. Jede Learn Rust Coding-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.