Hinzufügen und Entfernen in Sets
Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy. Lektion 19 von 65.
Sobald Sie über ein Set verfügen, müssen Sie oft dessen Inhalt ändern, indem Sie neue Elemente hinzufügen oder bestehende entfernen. Die Methoden add() und remove() bieten einfache Möglichkeiten, die Elemente Ihres Sets zu verwalten.
Die add()-Methode versucht, ein neues Element in das Set einzufügen. Da Sets jedoch nur eindeutige Werte speichern, passiert einfach nichts, wenn Sie versuchen, ein bereits vorhandenes Element hinzuzufügen – es tritt kein Fehler auf und das Set bleibt unverändert.
Set<String> usernames = {'alice', 'bob', 'charlie'};
usernames.add('diana'); // Fügt 'diana' erfolgreich hinzu
usernames.add('alice'); // Macht nichts - 'alice' existiert bereits
print(usernames); // {alice, bob, charlie, diana}Die Methode remove() funktioniert, indem sie den Wert nimmt, den Sie löschen möchten, und ihn aus dem Set entfernt. Wenn das Element nicht im Set vorhanden ist, macht die Methode einfach nichts, was die Verwendung sicher macht, ohne vorher eine Prüfung durchzuführen.
usernames.remove('bob'); // Entfernt 'bob'
usernames.remove('unknown'); // Macht nichts - Element nicht gefunden
print(usernames); // {alice, charlie, diana}Aufgabe
EinfachErstelle ein Programm, das ein Teamzusammenarbeitssystem verwaltet, indem es neue Teammitglieder hinzufügt und inaktive Mitglieder aus einem Projektteam entfernt. Dein Programm sollte:
- Eine String-Eingabe lesen, die den Projektnamen darstellt
- Mehrere String-Eingaben lesen, die die ursprünglichen Teammitglieder darstellen (die Eingabe endet, sobald du
"initial_done"erhältst) - Mehrere String-Eingaben lesen, die neue hinzuzufügende Mitglieder darstellen (die Eingabe endet, sobald du
"add_done"erhältst) - Mehrere String-Eingaben lesen, die zu entfernende Mitglieder darstellen (die Eingabe endet, sobald du
"remove_done"erhältst) - Ein Set mit den ursprünglichen Teammitgliedern erstellen
- Die Methode
add()verwenden, um jedes neue Mitglied zum Team hinzuzufügen - Die Methode
remove()verwenden, um jedes angegebene Mitglied aus dem Team zu entfernen - Die Ergebnisse der Teamverwaltung exakt im unten gezeigten Format ausgeben
Wenn der Projektname beispielsweise "Mobile App Development" lautet, die ursprünglichen Mitglieder "Alice", "Bob", "Charlie" sind, die hinzuzufügenden neuen Mitglieder "Diana", "Alice", "Eve" sind und die zu entfernenden Mitglieder "Bob", "Frank" sind, sollte dein Programm Folgendes ausgeben:
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 successfullyWenn der Projektname "Website Redesign" lautet, die ursprünglichen Mitglieder "John", "Sarah" sind, die hinzuzufügenden neuen Mitglieder "Mike", "John" sind und die zu entfernenden Mitglieder "Sarah", "Unknown" sind, sollte dein Programm Folgendes ausgeben:
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 successfullyWenn der Projektname "Data Analysis" lautet, das ursprüngliche Mitglied "Emma" ist, die hinzuzufügenden neuen Mitglieder "Tom", "Lisa" sind und das zu entfernende Mitglied "Emma" ist, sollte dein Programm Folgendes ausgeben:
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 successfullyDein Programm muss zeigen, dass die Methode add() nichts tut, wenn versucht wird, ein bereits vorhandenes Mitglied hinzuzufügen, und dass die Methode remove() nichts tut, wenn versucht wird, ein nicht vorhandenes Mitglied zu entfernen. Speichere die Eingabelisten, um zu zeigen, welche Operationen versucht wurden, und zeige anschließend den Inhalt des Sets nach jeder Operation, um die eindeutige Eigenschaft von Sets zu veranschaulichen.
Probier es selbst
import 'dart:io';
void main() {
// Projektname lesen
String? projectName = stdin.readLineSync();
// Anfängliche Teammitglieder lesen
List<String> initialMembers = [];
String? member;
while ((member = stdin.readLineSync()) != "initial_done") {
initialMembers.add(member!);
}
// Neue Mitglieder zum Hinzufügen lesen
List<String> membersToAdd = [];
while ((member = stdin.readLineSync()) != "add_done") {
membersToAdd.add(member!);
}
// Zu entfernende Mitglieder lesen
List<String> membersToRemove = [];
while ((member = stdin.readLineSync()) != "remove_done") {
membersToRemove.add(member!);
}
// TODO: Schreiben Sie Ihren Code unten
// Erstellen Sie ein Set mit den anfänglichen Teammitgliedern
// Fügen Sie neue Mitglieder mit der Methode add() hinzu
// Entfernen Sie Mitglieder mit der Methode remove() hinzu
// Geben Sie die Ergebnisse im erforderlichen Format aus
print("Project: $projectName");
// Fügen Sie hier die restlichen Print-Anweisungen hinzu
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Listenmanipulation
Listen-Eigenschaften: first & lastListen-Status: isEmpty & isNotEmptyEine Liste umkehrenHinzufügen zu einer Liste: insertElemente aus Liste entfernen: removeWhereSuchen in einer Liste: indexOfEine Liste sortierenEine Liste mischenZusammenfassung – Listen-Organizer4Fortgeschrittene Map-Manipulation
Über eine Map iterierenPrüfen auf Schlüssel und WerteMap-Eigenschaften: keys & valuesBedingtes Hinzufügen: putIfAbsentEinträge aus einer Map entfernenVerschachtelte MapsRückblick – Inventar-Update7Fortgeschrittene Funktionen
Anonyme FunktionenFunktionen als Argumente übergebenClosures verstehenEinführung in die RekursionRekursive Funktion: CountdownRekursive Funktion: FakultätZusammenfassung – List Processor10Abschluss-Herausforderungen
Herausforderung: NotensortiererHerausforderung: VokalzählerHerausforderung: FizzBuzz2Funktionale Listenoperationen
Transformieren mit 'map'Filtern mit 'where''.toList()' verwendenBedingungen prüfen mit 'any'Bedingungen mit 'every'Suchen mit 'firstWhere'Zusammenfassung – Datenfilterung3Sets
Was ist ein Set?Ein Set erstellenHinzufügen und Entfernen in SetsPrüfen auf Elemente in einem SetEine Liste in ein Set umwandelnSet-VereinigungSet-SchnittmengeSet-DifferenzRückblick – Einzigartige GästelisteÜbe selbstständig: Online-Dart-Compiler