Añadir y eliminar elementos de un Conjunto
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 19 de 65.
Una vez que tengas un Set, a menudo necesitarás modificar su contenido añadiendo nuevos elementos o eliminando los existentes. Los métodos add() y remove() proporcionan formas sencillas de gestionar los elementos de tu conjunto.
El método add() intenta insertar un nuevo elemento en el conjunto. Sin embargo, dado que los conjuntos solo almacenan valores únicos, si intentas añadir un elemento que ya existe, el método simplemente no hace nada: no se produce ningún error y el conjunto permanece sin cambios.
Set<String> usernames = {'alice', 'bob', 'charlie'};
usernames.add('diana'); // Agrega 'diana' con éxito
usernames.add('alice'); // No hace nada - 'alice' ya existe
print(usernames); // {alice, bob, charlie, diana}El método remove() funciona tomando el valor que deseas eliminar y quitándolo del conjunto. Si el elemento no existe en el conjunto, el método simplemente no hace nada, lo que hace que sea seguro de usar sin comprobarlo primero.
usernames.remove('bob'); // Elimina 'bob'
usernames.remove('unknown'); // No hace nada - elemento no encontrado
print(usernames); // {alice, charlie, diana}Desafío
FácilCrea un programa que gestione un sistema de colaboración de equipos añadiendo nuevos miembros del equipo y eliminando a los inactivos de un equipo de proyecto. Tu programa debe:
- Leer una entrada de cadena que represente el nombre del proyecto
- Leer múltiples entradas de cadena que representen a los miembros iniciales del equipo (la entrada terminará cuando recibas
"initial_done") - Leer múltiples entradas de cadena que representen a los nuevos miembros a añadir (la entrada terminará cuando recibas
"add_done") - Leer múltiples entradas de cadena que representen a los miembros a eliminar (la entrada terminará cuando recibas
"remove_done") - Crear un Set con los miembros iniciales del equipo
- Usar el método
add()para añadir cada nuevo miembro al equipo - Usar el método
remove()para eliminar a cada miembro especificado del equipo - Imprimir los resultados de la gestión del equipo en el formato exacto que se muestra a continuación
Por ejemplo, si el nombre del proyecto es "Mobile App Development", los miembros iniciales son "Alice", "Bob", "Charlie", los nuevos miembros a añadir son "Diana", "Alice", "Eve", y los miembros a eliminar son "Bob", "Frank", tu programa debería mostrar:
Project: Mobile App Development
Initial team: {Alice, Bob, Charlie}
Adding new members: [Diana, Alice, Eve]
After adding members: {Alice, Bob, Charlie, Diana, Eve}
Removing members: [Bob, Frank]
Final team: {Alice, Charlie, Diana, Eve}
Team size: 4
Status: Team updated successfullySi el nombre del proyecto es "Website Redesign", los miembros iniciales son "John", "Sarah", los nuevos miembros a añadir son "Mike", "John", y los miembros a eliminar son "Sarah", "Unknown", tu programa debería mostrar:
Project: Website Redesign
Initial team: {John, Sarah}
Adding new members: [Mike, John]
After adding members: {John, Sarah, Mike}
Removing members: [Sarah, Unknown]
Final team: {John, Mike}
Team size: 2
Status: Team updated successfullySi el nombre del proyecto es "Data Analysis", los miembros iniciales son "Emma", los nuevos miembros a añadir son "Tom", "Lisa", y los miembros a eliminar son "Emma", tu programa debería mostrar:
Project: Data Analysis
Initial team: {Emma}
Adding new members: [Tom, Lisa]
After adding members: {Emma, Tom, Lisa}
Removing members: [Emma]
Final team: {Tom, Lisa}
Team size: 2
Status: Team updated successfullyTu programa debe demostrar que el método add() no hace nada cuando se intenta añadir a un miembro que ya existe, y el método remove() no hace nada cuando se intenta eliminar a un miembro que no existe. Almacena las listas de entrada para mostrar qué operaciones se intentaron, luego muestra el contenido del Set después de cada operación para demostrar la naturaleza única de los Sets.
Hoja de referencia
Usa add() para insertar elementos en un Set. Si el elemento ya existe, no sucede nada:
Set<String> usernames = {'alice', 'bob', 'charlie'};
usernames.add('diana'); // Agrega 'diana' con éxito
usernames.add('alice'); // No hace nada - 'alice' ya existe
print(usernames); // {alice, bob, charlie, diana}Usa remove() para eliminar elementos de un Set. Si el elemento no existe, no sucede nada:
usernames.remove('bob'); // Elimina 'bob'
usernames.remove('unknown'); // No hace nada - elemento no encontrado
print(usernames); // {alice, charlie, diana}Pruébalo tú mismo
import 'dart:io';
void main() {
// Leer el nombre del proyecto
String? projectName = stdin.readLineSync();
// Leer los miembros iniciales del equipo
List<String> initialMembers = [];
String? member;
while ((member = stdin.readLineSync()) != "initial_done") {
initialMembers.add(member!);
}
// Leer los nuevos miembros para añadir
List<String> membersToAdd = [];
while ((member = stdin.readLineSync()) != "add_done") {
membersToAdd.add(member!);
}
// Leer los miembros para eliminar
List<String> membersToRemove = [];
while ((member = stdin.readLineSync()) != "remove_done") {
membersToRemove.add(member!);
}
// TODO: Escribe tu código abajo
// Crear un Set con los miembros iniciales del equipo
// Añadir nuevos miembros usando el método add()
// Eliminar miembros usando el método remove()
// Imprimir los resultados en el formato requerido
print("Project: $projectName");
// Añadir las sentencias de impresión restantes aquí
}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
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados única