Supprimer des entrées d'une Map
Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 30 sur 65.
Lors de la gestion de données dans une Map, vous aurez souvent besoin de supprimer les entrées qui ne sont plus nécessaires. La méthode remove() offre un moyen simple de supprimer une paire clé-valeur d'une map en utilisant sa clé.
La méthode remove() prend un seul paramètre : la clé de l'entrée que vous souhaitez supprimer. Lorsqu'elle est appelée, elle supprime à la fois la clé et sa valeur associée de la map. Si la clé n'existe pas dans la map, la méthode ne fait tout simplement rien sans provoquer d'erreur.
Map<String, double> inventory = {
'Laptop': 999.99,
'Mouse': 25.50,
'Keyboard': 75.00
};
// Supprimer la souris de l'inventaire
inventory.remove('Mouse');
print(inventory); // {Laptop: 999.99, Keyboard: 75.0}
// Essayer de supprimer un article inexistant ne fait rien
inventory.remove('Tablet');
print(inventory); // {Laptop: 999.99, Keyboard: 75.0}Cette méthode est essentielle pour maintenir des maps propres et à jour dans vos applications. Que vous gériez un inventaire, des données utilisateur ou toute autre collection où des éléments doivent être supprimés, remove() offre un moyen sûr et efficace de supprimer des entrées par leur clé.
Défi
FacileCréez un programme qui gère un service de streaming musical numérique en suivant les bibliothèques de chansons et en supprimant les chansons qui ne sont plus disponibles en raison de problèmes de licence. Votre programme doit :
- Lire une entrée de type chaîne de caractères représentant le nom du service de streaming
- Lire plusieurs paires d'entrées représentant les titres des chansons et leurs nombres d'écoutes (l'entrée se terminera lorsque vous recevrez
"library_done") - Lire plusieurs entrées de type chaîne de caractères représentant les chansons à supprimer en raison de problèmes de licence (l'entrée se terminera lorsque vous recevrez
"removal_done") - Créer une Map pour stocker les titres des chansons comme clés et leurs nombres d'écoutes comme valeurs
- Utiliser la méthode
remove()pour supprimer chaque chanson spécifiée de la bibliothèque - Calculer les statistiques de la bibliothèque et afficher le rapport de suppression exactement dans le format indiqué ci-dessous
Par exemple, si le nom du service est "MusicStream Pro", que la bibliothèque comprend "Bohemian Rhapsody" avec 2500000 écoutes, "Imagine" avec 1800000 écoutes, "Hotel California" avec 2200000 écoutes, "Stairway to Heaven" avec 1900000 écoutes, et que les chansons à supprimer sont "Imagine", "Yesterday", "Hotel California", votre programme doit afficher :
Service: MusicStream Pro
Original Library: {Bohemian Rhapsody: 2500000, Imagine: 1800000, Hotel California: 2200000, Stairway to Heaven: 1900000}
Removal Process:
Removing 'Imagine': Song removed (had 1800000 streams)
Removing 'Yesterday': Song not found in library
Removing 'Hotel California': Song removed (had 2200000 streams)
Updated Library: {Bohemian Rhapsody: 2500000, Stairway to Heaven: 1900000}
Library Statistics:
Songs before removal: 4
Songs after removal: 2
Songs successfully removed: 2
Songs not found: 1
Total streams lost: 4000000
Remaining total streams: 4400000
Status: Library update completedSi le nom du service est "SoundWave", que la bibliothèque comprend "Shape of You" avec 3200000 écoutes, "Blinding Lights" avec 2800000 écoutes, "Someone Like You" avec 2100000 écoutes, et que les chansons à supprimer sont "Blinding Lights", "Perfect", votre programme doit afficher :
Service: SoundWave
Original Library: {Shape of You: 3200000, Blinding Lights: 2800000, Someone Like You: 2100000}
Removal Process:
Removing 'Blinding Lights': Song removed (had 2800000 streams)
Removing 'Perfect': Song not found in library
Updated Library: {Shape of You: 3200000, Someone Like You: 2100000}
Library Statistics:
Songs before removal: 3
Songs after removal: 2
Songs successfully removed: 1
Songs not found: 1
Total streams lost: 2800000
Remaining total streams: 5300000
Status: Library update completedSi le nom du service est "AudioHub", que la bibliothèque comprend "Bad Guy" avec 1500000 écoutes, "Watermelon Sugar" avec 1700000 écoutes, "Levitating" avec 1400000 écoutes, "Good 4 U" avec 1600000 écoutes, et que les chansons à supprimer sont "Bad Guy", "Levitating", "Good 4 U", "Drivers License", votre programme doit afficher :
Service: AudioHub
Original Library: {Bad Guy: 1500000, Watermelon Sugar: 1700000, Levitating: 1400000, Good 4 U: 1600000}
Removal Process:
Removing 'Bad Guy': Song removed (had 1500000 streams)
Removing 'Levitating': Song removed (had 1400000 streams)
Removing 'Good 4 U': Song removed (had 1600000 streams)
Removing 'Drivers License': Song not found in library
Updated Library: {Watermelon Sugar: 1700000}
Library Statistics:
Songs before removal: 4
Songs after removal: 1
Songs successfully removed: 3
Songs not found: 1
Total streams lost: 4500000
Remaining total streams: 1700000
Status: Library update completedVotre programme doit utiliser la méthode remove() pour supprimer les chansons de la Map. Suivez quelles chansons ont été supprimées avec succès et lesquelles n'ont pas été trouvées. Calculez le total des écoutes perdues en additionnant les nombres d'écoutes des chansons supprimées avec succès. Le format d'entrée sera : le nom du service, puis en alternance les titres des chansons et les nombres d'écoutes (sous forme de chaînes de caractères qui doivent être converties en entiers), se terminant par "library_done", suivi des titres des chansons à supprimer se terminant par "removal_done".
Aide-mémoire
La méthode remove() supprime une paire clé-valeur d'une Map en utilisant sa clé :
Map<String, double> inventory = {
'Laptop': 999.99,
'Mouse': 25.50,
'Keyboard': 75.00
};
// Supprimer l'entrée par clé
inventory.remove('Mouse');
print(inventory); // {Laptop: 999.99, Keyboard: 75.0}
// Supprimer une clé inexistante ne fait rien
inventory.remove('Tablet');
print(inventory); // {Laptop: 999.99, Keyboard: 75.0}La méthode gère en toute sécurité les clés inexistantes sans provoquer d'erreurs.
Essayez vous-même
import 'dart:io';
void main() {
// Lire le nom du service
String? serviceName = stdin.readLineSync();
// Créer une Map pour stocker les titres de chansons et le nombre d'écoutes
Map<String, int> songLibrary = {};
// Lire les données de la bibliothèque de chansons
while (true) {
String? input = stdin.readLineSync();
if (input == "library_done") break;
String songTitle = input!;
String? streamCountStr = stdin.readLineSync();
int streamCount = int.parse(streamCountStr!);
songLibrary[songTitle] = streamCount;
}
// Lire les chansons à supprimer
List<String> songsToRemove = [];
while (true) {
String? input = stdin.readLineSync();
if (input == "removal_done") break;
songsToRemove.add(input!);
}
// TODO: Écrivez votre code ci-dessous
// Traiter la suppression des chansons en utilisant la méthode remove()
// Suivre les statistiques et générer le format de sortie requis
// Afficher les résultats dans le format requis
// N'oubliez pas d'inclure : Nom du service, Bibliothèque originale, Processus de suppression,
// Bibliothèque mise à jour et Statistiques de la bibliothèque
}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
1Manipulation avancée des listes
Propriétés de liste : first & lastÉtat de la liste : isEmpty & isNotEmptyInverser une listeAjouter à une liste : insertSuppression dans une liste : removeWhereRechercher dans une liste : indexOfTrier une listeMélanger une listeRécapitulatif - Organisateur de liste4Manipulation avancée des Maps
Itérer sur une MapVérifier les clés et les valeursPropriétés de Map : keys & valuesAjout conditionnel : putIfAbsentSupprimer des entrées d'une MapMaps imbriquéesRécapitulatif - Mise à jour de l'inventaire2Opérations fonctionnelles sur les listes
Transformer avec 'map'Filtrer avec 'where'Utiliser '.toList()'Vérifier des conditions avec 'any'Conditions avec 'every'Trouver avec 'firstWhere'Récapitulatif - Filtrage de données3Les Ensembles
Qu'est-ce qu'un ensemble ?Créer un ensembleAjouter et supprimer des éléments d'un ensembleVérifier la présence d'éléments dans un ensembleConvertir une liste en ensembleUnion d'ensemblesIntersection d'ensemblesDifférence d'ensemblesRécapitulatif - Liste d'invités uniques