Menu
Coddy logo textTech

Einträge aus einer Map entfernen

Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 30 von 65.

Beim Verwalten von Daten in einer Map müssen Sie oft Einträge entfernen, die nicht mehr benötigt werden. Die remove()-Methode bietet eine einfache Möglichkeit, ein Schlüssel-Wert-Paar unter Verwendung seines Schlüssels aus einer Map zu löschen.

Die remove()-Methode nimmt einen einzelnen Parameter entgegen: den Schlüssel des Eintrags, den Sie löschen möchten. Wenn sie aufgerufen wird, entfernt sie sowohl den Schlüssel als auch den zugehörigen Wert aus der Map. Wenn der Schlüssel nicht in der Map existiert, macht die Methode einfach nichts, ohne einen Fehler zu verursachen.

Map<String, double> inventory = {
  'Laptop': 999.99,
  'Mouse': 25.50,
  'Keyboard': 75.00
};

// Entferne die Maus aus dem Inventar
inventory.remove('Mouse');
print(inventory);  // {Laptop: 999.99, Keyboard: 75.0}

// Der Versuch, einen nicht vorhandenen Artikel zu entfernen, bewirkt nichts
inventory.remove('Tablet');
print(inventory);  // {Laptop: 999.99, Keyboard: 75.0}

Diese Methode ist essenziell für die Pflege sauberer, aktueller Maps in Ihren Anwendungen. Ganz gleich, ob Sie Bestände, Benutzerdaten oder andere Sammlungen verwalten, aus denen Elemente entfernt werden müssen – remove() bietet eine sichere und effiziente Möglichkeit, Einträge über ihren Schlüssel zu löschen.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein Programm, das einen digitalen Musik-Streaming-Dienst verwaltet, indem es Song-Bibliotheken verfolgt und Songs entfernt, die aufgrund von Lizenzproblemen nicht mehr verfügbar sind. Ihr Programm sollte:

  1. Einen String-Input einlesen, der den Namen des Streaming-Dienstes darstellt
  2. Mehrere Paare von Eingaben einlesen, die Songtitel und deren Streaming-Zahlen darstellen (die Eingabe endet, wenn Sie "library_done" erhalten)
  3. Mehrere String-Inputs einlesen, die zu entfernende Songs aufgrund von Lizenzproblemen darstellen (die Eingabe endet, wenn Sie "removal_done" erhalten)
  4. Eine Map erstellen, um Songtitel als Schlüssel und deren Streaming-Zahlen als Werte zu speichern
  5. Die Methode remove() verwenden, um jeden angegebenen Song aus der Bibliothek zu entfernen
  6. Bibliotheksstatistiken berechnen und den Entfernungsbericht im exakt unten gezeigten Format ausgeben

Wenn der Dienstname beispielsweise "MusicStream Pro" ist, die Bibliothek "Bohemian Rhapsody" mit 2500000 Streams, "Imagine" mit 1800000 Streams, "Hotel California" mit 2200000 Streams, "Stairway to Heaven" mit 1900000 Streams enthält und die zu entfernenden Songs "Imagine", "Yesterday", "Hotel California" sind, sollte Ihr Programm Folgendes ausgeben:

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 completed

Wenn der Dienstname "SoundWave" ist, die Bibliothek "Shape of You" mit 3200000 Streams, "Blinding Lights" mit 2800000 Streams, "Someone Like You" mit 2100000 Streams enthält und die zu entfernenden Songs "Blinding Lights", "Perfect" sind, sollte Ihr Programm Folgendes ausgeben:

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 completed

Wenn der Dienstname "AudioHub" ist, die Bibliothek "Bad Guy" mit 1500000 Streams, "Watermelon Sugar" mit 1700000 Streams, "Levitating" mit 1400000 Streams, "Good 4 U" mit 1600000 Streams enthält und die zu entfernenden Songs "Bad Guy", "Levitating", "Good 4 U", "Drivers License" sind, sollte Ihr Programm Folgendes ausgeben:

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 completed

Ihr Programm muss die Methode remove() verwenden, um Songs aus der Map zu löschen. Verfolgen Sie, welche Songs erfolgreich entfernt wurden und welche nicht gefunden wurden. Berechnen Sie die insgesamt verlorenen Streams, indem Sie die Streaming-Zahlen der erfolgreich entfernten Songs summieren. Das Eingabeformat ist: Dienstname, dann abwechselnd Songtitel und Streaming-Zahlen (als Strings, die in Ganzzahlen umgewandelt werden müssen), endend mit "library_done", gefolgt von den zu entfernenden Songtiteln, endend mit "removal_done".

Spickzettel

Die Methode remove() löscht ein Schlüssel-Wert-Paar aus einer Map unter Verwendung seines Schlüssels:

Map<String, double> inventory = {
  'Laptop': 999.99,
  'Mouse': 25.50,
  'Keyboard': 75.00
};

// Remove entry by key
inventory.remove('Mouse');
print(inventory);  // {Laptop: 999.99, Keyboard: 75.0}

// Removing non-existent key does nothing
inventory.remove('Tablet');
print(inventory);  // {Laptop: 999.99, Keyboard: 75.0}

Die Methode verarbeitet nicht vorhandene Schlüssel sicher, ohne Fehler zu verursachen.

Probier es selbst

import 'dart:io';

void main() {
  // Dienstnamen lesen
  String? serviceName = stdin.readLineSync();
  
  // Eine Map erstellen, um Songtitel und Streaming-Zahlen zu speichern
  Map<String, int> songLibrary = {};
  
  // Daten der Song-Bibliothek lesen
  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;
  }
  
  // Zu entfernende Songs lesen
  List<String> songsToRemove = [];
  while (true) {
    String? input = stdin.readLineSync();
    if (input == "removal_done") break;
    songsToRemove.add(input!);
  }
  
  // TODO: Schreiben Sie Ihren Code unten
  // Verarbeiten Sie das Entfernen von Songs mit der remove()-Methode
  // Verfolgen Sie Statistiken und generieren Sie das erforderliche Ausgabeformat
  
  // Die Ergebnisse im erforderlichen Format ausgeben
  // Denken Sie daran, Folgendes einzubeziehen: Dienstname, ursprüngliche Bibliothek, Entfernungsprozess, 
  // aktualisierte Bibliothek und Bibliotheksstatistiken
}
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 & Ablauf