Menu
Coddy logo textTech

Einfügen von Schlüssel-Wert-Paaren

Teil des Abschnitts Logik & Kontrollfluss der Rust-Journey von Coddy. Lektion 29 von 66.

Da du nun eine leere Hash-Map hast, ist es an der Zeit, einige Daten hinzuzufügen. Du kannst Schlüssel-Wert-Paare mithilfe der Methode .insert() in eine Hash-Map einfügen:

let mut capitals = HashMap::new();
capitals.insert("France", "Paris");
capitals.insert("Japan", "Tokyo");

Die Methode .insert() akzeptiert zwei Parameter: den Schlüssel und den Wert. In diesem Beispiel speichern wir Ländernamen als Schlüssel und ihre Hauptstädte als Werte.

Es gibt ein wichtiges Verhalten, an das du dich erinnern solltest: Wenn du einen Schlüssel einfügst, der bereits in der Hash-Map vorhanden ist, überschreibt der neue Wert den alten:

capitals.insert("France", "Lyon");  // Dies überschreibt "Paris"

Nach diesem Vorgang würde die Suche nach „France“ statt „Paris“ den Wert „Lyon“ zurückgeben. Dieses Überschreibverhalten macht .insert() sowohl zum Hinzufügen neuer Einträge als auch zum Aktualisieren vorhandener Einträge in deiner HashMap nützlich.

challenge icon

Aufgabe

Einfach

Du erhältst drei Eingaben: einen Produktnamen, seinen Preis (als Dezimalzahl) und einen weiteren Produktnamen. Erstelle eine veränderbare Hashmap, um Produktnamen als Schlüssel (Typ String) und ihre Preise als Werte (Typ f64) zu speichern. Füge das erste Produkt mit seinem Preis in die Hashmap ein. Füge dann das zweite Produkt mit einem Preis von 0.0 ein. Aktualisiere schließlich den Preis des zweiten Produkts auf 15.99, indem du es erneut mit dem neuen Preis einfügst. Gib alle Informationen exakt im unten gezeigten Format aus.

Hinweis zu .clone(): Wenn du eine String-Variable als Schlüssel in eine HashMap einfügst, bedeutet Rusts Besitzmodell, dass die Variable in die Map verschoben wird und danach nicht mehr verwendet werden kann. Damit du die Variable weiterhin verwenden kannst (z. B. zum Ausgeben oder erneuten Einfügen), rufe .clone() für sie auf, wenn du sie an insert() übergibst. Zum Beispiel: map.insert(name.clone(), price).

Anforderungen:

  • Importiere HashMap aus std::collections
  • Erstelle eine veränderbare Hashmap mit den Typen HashMap<String, f64>
  • Lies die erste Eingabe als Namen des ersten Produkts ein
  • Lies die zweite Eingabe ein und konvertiere sie für den Preis des ersten Produkts in f64
  • Füge das erste Produkt und seinen Preis mithilfe von .clone() für den Produktnamen in die Hashmap ein
  • Lies die dritte Eingabe als Namen des zweiten Produkts ein
  • Füge das zweite Produkt mit einem Preis von 0.0 mithilfe von .clone() für den Produktnamen ein
  • Füge das zweite Produkt erneut mit einem Preis von 15.99 mithilfe von .clone() ein (dadurch wird der vorherige Wert überschrieben)
  • Gib die Informationen für beide Produkte exakt im unten gezeigten Format aus

Eingabe:

  • Erste Zeile: Name des ersten Produkts (z. B. Laptop)
  • Zweite Zeile: Preis des ersten Produkts als Dezimalzahl (z. B. 999.99)
  • Dritte Zeile: Name des zweiten Produkts (z. B. Mouse)

Ausgabe:

  • Erste Zeile: Inserted [first_product] at $[price]
  • Zweite Zeile: Inserted [second_product] at $0.00
  • Dritte Zeile: Updated [second_product] to $15.99

Probier es selbst

use std::collections::HashMap;
use std::io;

fn main() {
    // Eingaben lesen
    let mut product1 = String::new();
    io::stdin().read_line(&mut product1).expect("Failed to read line");
    let product1 = product1.trim().to_string();
    
    let mut price1_input = String::new();
    io::stdin().read_line(&mut price1_input).expect("Failed to read line");
    let price1: f64 = price1_input.trim().parse().expect("Failed to parse price");
    
    let mut product2 = String::new();
    io::stdin().read_line(&mut product2).expect("Failed to read line");
    let product2 = product2.trim().to_string();
    
    // TODO: Schreibe deinen Code darunter
    // Erstelle eine veränderbare HashMap, füge Produkte ein und gib die erforderliche Ausgabe aus
    
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Kontrollfluss

Übe selbstständig: Online-Rust-Compiler