Menu
Coddy logo textTech

Eliminar entradas de un mapa

Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 30 de 65.

Al gestionar datos en un Map, a menudo necesitarás eliminar entradas que ya no sean necesarias. El método remove() proporciona una forma sencilla de eliminar un par clave-valor de un mapa utilizando su clave.

El método remove() toma un solo parámetro: la clave de la entrada que desea eliminar. Cuando se llama, elimina tanto la clave como su valor asociado del mapa. Si la clave no existe en el mapa, el método simplemente no hace nada sin causar un error.

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

// Eliminar el ratón del inventario
inventory.remove('Mouse');
print(inventory);  // {Laptop: 999.99, Keyboard: 75.0}

// Intentar eliminar un artículo inexistente no hace nada
inventory.remove('Tablet');
print(inventory);  // {Laptop: 999.99, Keyboard: 75.0}

Este método es esencial para mantener mapas limpios y actualizados en sus aplicaciones. Ya sea que esté gestionando inventario, datos de usuario o cualquier otra colección donde sea necesario eliminar elementos, remove() proporciona una forma segura y eficiente de eliminar entradas por su clave.

challenge icon

Desafío

Fácil

Crea un programa que gestione un servicio de streaming de música digital mediante el seguimiento de las bibliotecas de canciones y la eliminación de aquellas que ya no están disponibles debido a problemas de licencia. Tu programa debe:

  1. Leer una entrada de cadena que represente el nombre del servicio de streaming
  2. Leer múltiples pares de entradas que representen títulos de canciones y sus recuentos de reproducciones (la entrada terminará cuando recibas "library_done")
  3. Leer múltiples entradas de cadena que representen las canciones que se eliminarán debido a problemas de licencia (la entrada terminará cuando recibas "removal_done")
  4. Crear un Map para almacenar los títulos de las canciones como claves y sus recuentos de reproducciones como valores
  5. Usar el método remove() para eliminar cada canción especificada de la biblioteca
  6. Calcular las estadísticas de la biblioteca e imprimir el informe de eliminación en el formato exacto que se muestra a continuación

Por ejemplo, si el nombre del servicio es "MusicStream Pro", la biblioteca incluye "Bohemian Rhapsody" con 2500000 reproducciones, "Imagine" con 1800000 reproducciones, "Hotel California" con 2200000 reproducciones, "Stairway to Heaven" con 1900000 reproducciones, y las canciones a eliminar son "Imagine", "Yesterday", "Hotel California", tu programa debería mostrar:

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

Si el nombre del servicio es "SoundWave", la biblioteca incluye "Shape of You" con 3200000 reproducciones, "Blinding Lights" con 2800000 reproducciones, "Someone Like You" con 2100000 reproducciones, y las canciones a eliminar son "Blinding Lights", "Perfect", tu programa debería mostrar:

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

Si el nombre del servicio es "AudioHub", la biblioteca incluye "Bad Guy" con 1500000 reproducciones, "Watermelon Sugar" con 1700000 reproducciones, "Levitating" con 1400000 reproducciones, "Good 4 U" con 1600000 reproducciones, y las canciones a eliminar son "Bad Guy", "Levitating", "Good 4 U", "Drivers License", tu programa debería mostrar:

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

Tu programa debe usar el método remove() para eliminar canciones del Map. Realiza un seguimiento de qué canciones se eliminaron con éxito y cuáles no se encontraron. Calcula el total de reproducciones perdidas sumando los recuentos de reproducciones de las canciones eliminadas con éxito. El formato de entrada será: nombre del servicio, luego títulos de canciones y recuentos de reproducciones alternados (como cadenas que deben convertirse a enteros), terminando con "library_done", seguido de los títulos de las canciones a eliminar terminando con "removal_done".

Hoja de referencia

El método remove() elimina un par clave-valor de un Map utilizando su clave:

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}

El método maneja de forma segura las claves inexistentes sin causar errores.

Pruébalo tú mismo

import 'dart:io';

void main() {
  // Leer el nombre del servicio
  String? serviceName = stdin.readLineSync();
  
  // Crear un Map para almacenar los títulos de las canciones y los conteos de reproducciones
  Map<String, int> songLibrary = {};
  
  // Leer los datos de la biblioteca de canciones
  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;
  }
  
  // Leer las canciones a eliminar
  List<String> songsToRemove = [];
  while (true) {
    String? input = stdin.readLineSync();
    if (input == "removal_done") break;
    songsToRemove.add(input!);
  }
  
  // TODO: Escribe tu código a continuación
  // Procesar la eliminación de canciones utilizando el método remove()
  // Realizar el seguimiento de las estadísticas y generar el formato de salida requerido
  
  // Imprimir los resultados en el formato requerido
  // Recuerda incluir: Nombre del servicio, Biblioteca Original, Proceso de Eliminación, 
  // Biblioteca Actualizada y Estadísticas de la Biblioteca
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo