Aggiungere e rimuovere elementi dagli insiemi
Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 19 di 65.
Una volta ottenuto un Set, spesso dovrai modificarne il contenuto aggiungendo nuovi elementi o rimuovendo quelli esistenti. I metodi add() e remove() offrono modi semplici per gestire gli elementi del tuo set.
Il metodo add() tenta di inserire un nuovo elemento nell’insieme. Tuttavia, poiché gli insiemi memorizzano solo valori univoci, se provi ad aggiungere un elemento già presente, il metodo semplicemente non fa nulla: non si verifica alcun errore e l’insieme rimane invariato.
Set<String> usernames = {'alice', 'bob', 'charlie'};
usernames.add('diana'); // Agrega 'diana' correctamente
usernames.add('alice'); // No hace nada: 'alice' ya existe
print(usernames); // {alice, bob, charlie, diana}Il metodo remove() funziona prendendo il valore che vuoi eliminare e rimuovendolo dall'insieme. Se l'elemento non esiste nell'insieme, il metodo semplicemente non fa nulla, quindi è sicuro usarlo senza controllare prima.
usernames.remove('bob'); // Rimuove 'bob'
usernames.remove('unknown'); // Non fa nulla - elemento non trovato
print(usernames); // {alice, charlie, diana}Sfida
FacileCrea un programma che gestisca un sistema di collaborazione del team aggiungendo nuovi membri e rimuovendo quelli inattivi dal team di un progetto. Il tuo programma deve:
- Leggere una stringa in input che rappresenta il nome del progetto
- Leggere più stringhe in input che rappresentano i membri iniziali del team (l'input terminerà quando riceverai
"initial_done") - Leggere più stringhe in input che rappresentano i nuovi membri da aggiungere (l'input terminerà quando riceverai
"add_done") - Leggere più stringhe in input che rappresentano i membri da rimuovere (l'input terminerà quando riceverai
"remove_done") - Creare un Set con i membri iniziali del team
- Usare il metodo
add()per aggiungere ogni nuovo membro al team - Usare il metodo
remove()per rimuovere dal team ogni membro specificato - Stampare i risultati della gestione del team nel formato esatto mostrato di seguito
Ad esempio, se il nome del progetto è "Mobile App Development", i membri iniziali sono "Alice", "Bob", "Charlie", i nuovi membri da aggiungere sono "Diana", "Alice", "Eve" e i membri da rimuovere sono "Bob", "Frank", il tuo programma dovrebbe produrre:
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 successfullySe il nome del progetto è "Website Redesign", i membri iniziali sono "John", "Sarah", i nuovi membri da aggiungere sono "Mike", "John" e i membri da rimuovere sono "Sarah", "Unknown", il tuo programma dovrebbe produrre:
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 successfullySe il nome del progetto è "Data Analysis", il membro iniziale è "Emma", i nuovi membri da aggiungere sono "Tom", "Lisa" e il membro da rimuovere è "Emma", il tuo programma dovrebbe produrre:
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 successfullyIl tuo programma deve dimostrare che il metodo add() non fa nulla quando si tenta di aggiungere un membro già esistente e che il metodo remove() non fa nulla quando si tenta di rimuovere un membro che non esiste. Memorizza gli elenchi di input per mostrare quali operazioni sono state tentate, poi mostra il contenuto del Set dopo ogni operazione per dimostrare la natura degli insiemi, che contengono solo elementi unici.
Provalo tu
import 'dart:io';
void main() {
// Leggi il nome del progetto
String? projectName = stdin.readLineSync();
// Leggi i membri iniziali del team
List<String> initialMembers = [];
String? member;
while ((member = stdin.readLineSync()) != "initial_done") {
initialMembers.add(member!);
}
// Leggi i nuovi membri da aggiungere
List<String> membersToAdd = [];
while ((member = stdin.readLineSync()) != "add_done") {
membersToAdd.add(member!);
}
// Leggi i membri da rimuovere
List<String> membersToRemove = [];
while ((member = stdin.readLineSync()) != "remove_done") {
membersToRemove.add(member!);
}
// TODO: Scrivi il tuo codice qui sotto
// Crea un Set con i membri iniziali del team
// Aggiungi i nuovi membri usando il metodo add()
// Rimuovi i membri usando il metodo remove()
// Stampa i risultati nel formato richiesto
print("Project: $projectName");
// Aggiungi qui le restanti istruzioni di stampa
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Manipolazione avanzata delle liste
Proprietà delle liste: primo e ultimoStato della lista: isEmpty e isNotEmpInvertire una listaAggiungere a una lista: insertRimozione dalla lista: removeWhereRicerca in una lista: indexOfOrdinare una listaMescolare una listaRiepilogo - Organizzatore di liste4Manipolazione avanzata delle mappe
Iterare su una mappaVerificare chiavi e valoriProprietà delle mappe: chiavi e valoriAggiunta condizionale: putIfAbsentRimuovere elementi da una mappaMappe annidateRiepilogo - Aggiornamento dell'inventario2Operazioni funzionali sulle liste
Trasformare con 'map'Filtrare con 'where'Usare '.toList()'Verificare condizioni con 'any'Condizioni con 'every'Trovare con 'firstWhere'Riepilogo - Filtraggio dei dati3Insiemi
Che cos'è un insieme?Creare un insiemeAggiungere e rimuovere elementi dagli insiemiVerificare la presenza di elementi in un insiemeConvertire una lista in un insiemeUnione di insiemiIntersezione di insiemiDifferenza tra insiemiRiepilogo - Lista degli ospiti uniciEsercitati da solo: Compilatore Dart online