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
EinfachErstellen Sie ein Programm, das ein Team-Kollaborationssystem verwaltet, indem es neue Teammitglieder hinzufügt und inaktive Mitglieder aus einem Projektteam entfernt. Ihr Programm sollte:
- Einen String-Input einlesen, der den Projektnamen darstellt
- Mehrere String-Inputs einlesen, die die ursprünglichen Teammitglieder darstellen (die Eingabe endet, wenn Sie
"initial_done"erhalten) - Mehrere String-Inputs einlesen, die neue hinzuzufügende Mitglieder darstellen (die Eingabe endet, wenn Sie
"add_done"erhalten) - Mehrere String-Inputs einlesen, die zu entfernende Mitglieder darstellen (die Eingabe endet, wenn Sie
"remove_done"erhalten) - 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 im exakt unten gezeigten Format ausgeben
Wenn zum Beispiel der Projektname "Mobile App Development" ist, die ursprünglichen Mitglieder "Alice", "Bob", "Charlie" sind, die neu hinzuzufügenden Mitglieder "Diana", "Alice", "Eve" sind und die zu entfernenden Mitglieder "Bob", "Frank" sind, sollte Ihr 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" ist, die ursprünglichen Mitglieder "John", "Sarah" sind, die neu hinzuzufügenden Mitglieder "Mike", "John" sind und die zu entfernenden Mitglieder "Sarah", "Unknown" sind, sollte Ihr 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" ist, die ursprünglichen Mitglieder "Emma" sind, die neu hinzuzufügenden Mitglieder "Tom", "Lisa" sind und das zu entfernende Mitglied "Emma" ist, sollte Ihr 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 successfullyIhr Programm muss demonstrieren, dass die Methode add() nichts bewirkt, wenn versucht wird, ein bereits existierendes Mitglied hinzuzufügen, und die Methode remove() nichts bewirkt, wenn versucht wird, ein nicht existierendes Mitglied zu entfernen. Speichern Sie die Eingabelisten, um zu zeigen, welche Operationen versucht wurden, und zeigen Sie dann den Inhalt des Sets nach jeder Operation an, um die Einzigartigkeit von Sets zu demonstrieren.
Spickzettel
Verwenden Sie add(), um Elemente in ein Set einzufügen. Wenn das Element bereits existiert, passiert nichts:
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}Verwenden Sie remove(), um Elemente aus einem Set zu löschen. Wenn das Element nicht existiert, passiert nichts:
usernames.remove('bob'); // Entfernt 'bob'
usernames.remove('unknown'); // Macht nichts - Element nicht gefunden
print(usernames); // {alice, charlie, diana}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