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.
Défi
FacileVous 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
HashMapdepuisstd::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
f64pour 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.0en utilisant.clone()sur le nom du produit - Insérez à nouveau le deuxième produit avec un prix de
15.99en 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
}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
1Structures de contrôle avancées
L'expression 'match'Filtrage de plusieurs valeursFiltrage d'intervallesL'expression 'if let'Les boucles en tant qu'expressionsRécapitulatif - Analyseur de commandes simple4Regrouper des données avec les structures
Qu'est-ce qu'une structure ?Aperçu des structuresAccéder aux champs d'une structureStructures mutablesLes structures comme paramètres de fonctionStructures tupleRécapitulatif - Créer une structure Book2Introduction aux vecteurs
Qu'est-ce qu'un vecteur ?Créer un vecteurAjouter des éléments avec pushAccéder aux éléments d'un vecteurItérer sur un vecteurItération mutableSupprimer des élémentsRécapitulatif - Suivi de score basique5Paires clé-valeur avec les Hash Maps
Qu'est-ce qu'une Hash Map ?Créer une Hash MapInsérer des paires clé-valeurAccéder aux valeursParcourir une Hash MapMettre à jour une valeurSupprimer une paireRécapitulatif - Compteur de mots8Projet : Inventaire d'articles simple
Configuration du projetAjouter un articleVérifier le stockVendre un articleAssembler le tout3Liste de tâches en ligne de commande
Configuration du projetAjouter une tâcheAfficher toutes les tâchesSupprimer une tâcheCode finalEntraînez-vous par vous-même : Compilateur Rust en ligne