Menu
Coddy logo textTech

Insérer des paires clé-valeur

Fait partie de la section Logique & Flux du Journey Rust de Coddy. Leçon 29 sur 66.

Maintenant que vous avez une table de hachage vide, il est temps d’y ajouter des données. Vous pouvez insérer des paires clé-valeur dans une table de hachage à l’aide de la méthode .insert() :

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

La méthode .insert() prend deux paramètres : la clé et la valeur. Dans cet exemple, nous stockons les noms de pays comme clés et leurs capitales comme valeurs.

Il y a un comportement important à retenir : si tu insères une clé qui existe déjà dans la table de hachage, la nouvelle valeur remplacera l’ancienne :

capitals.insert("France", "Lyon");  // Ceci écrase "Paris"

Après cette opération, rechercher "France" renverrait "Lyon" au lieu de "Paris". Ce comportement d’écrasement rend .insert() utile à la fois pour ajouter de nouvelles entrées et pour mettre à jour celles qui existent déjà dans votre table de hachage.

challenge icon

Défi

Facile

Vous recevrez trois entrées : un nom de produit, son prix (sous forme de nombre décimal) et le nom d’un autre produit. Créez une table de hachage mutable pour stocker les noms des produits comme clés (de type String) et leurs prix comme valeurs (de type f64). Insérez le premier produit avec son prix dans la table de hachage. Insérez ensuite le deuxième produit avec un prix de 0.0. Enfin, mettez à jour le prix du deuxième produit à 15.99 en l’insérant à nouveau avec le nouveau prix. Affichez toutes les informations dans le format exact indiqué ci-dessous.

Remarque concernant .clone() : Lorsque vous insérez une variable String comme clé dans une HashMap, les règles de propriété de Rust signifient que la variable serait déplacée dans la table et ne pourrait plus être utilisée ensuite. Pour continuer à utiliser la variable (par exemple, pour l’afficher ou l’insérer à nouveau), appelez .clone() dessus lorsque vous la transmettez à insert(). Par exemple : map.insert(name.clone(), price).

Exigences :

  • Importez HashMap depuis std::collections
  • Créez une table de hachage mutable avec les types HashMap<String, f64>
  • Lisez la première entrée comme nom du premier produit
  • Lisez la deuxième entrée et convertissez-la en f64 pour le prix du premier produit
  • Insérez le premier produit et son prix dans la table de hachage en utilisant .clone() sur le nom du produit
  • Lisez la troisième entrée comme nom du deuxième produit
  • Insérez le deuxième produit avec un prix de 0.0 en utilisant .clone() sur le nom du produit
  • Insérez à nouveau le deuxième produit avec un prix de 15.99 en utilisant .clone() (cela remplacera la valeur précédente)
  • Affichez les informations des deux produits dans le format exact indiqué ci-dessous

Entrée :

  • Première ligne : nom du premier produit (par exemple, Laptop)
  • Deuxième ligne : prix du premier produit sous forme de nombre décimal (par exemple, 999.99)
  • Troisième ligne : nom du deuxième produit (par exemple, Mouse)

Sortie :

  • Première ligne : Inserted [first_product] at $[price]
  • Deuxième ligne : Inserted [second_product] at $0.00
  • Troisième ligne : Updated [second_product] to $15.99

Essayez vous-même

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

fn main() {
    // Lire les entrées
    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: Écrivez votre code ci-dessous
    // Créer un HashMap mutable, insérer les produits et afficher la sortie requise
    
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux

Entraînez-vous par vous-même : Compilateur Rust en ligne