Menu
Coddy logo textTech

Eine Liste in ein Set umwandeln

Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy. Lektion 21 von 65.

Eine der praktischsten Anwendungen von Set ist das Entfernen doppelter Elemente aus einer List. Da Sets Duplikate automatisch eliminieren, können Sie eine Liste mit wiederholten Werten ganz einfach in eine Sammlung eindeutiger Elemente umwandeln.

Um eine List in ein Set zu konvertieren, übergeben Sie die Liste einfach an den Set.from() Konstruktor. Dies erstellt ein neues Set, das alle eindeutigen Elemente der ursprünglichen Liste enthält.

List<int> numbersWithDuplicates = [1, 2, 2, 3, 3, 3, 4, 5, 5];
Set<int> uniqueNumbers = Set.from(numbersWithDuplicates);

print(uniqueNumbers);  // {1, 2, 3, 4, 5}

Wenn Sie das Ergebnis als List zurückbenötigen (vielleicht um die Kompatibilität mit anderen Teilen Ihres Codes zu wahren), können Sie das Set mit toList() wieder in eine Liste umwandeln. Dies liefert Ihnen eine Liste, die nur die eindeutigen Elemente aus dem Original enthält.

List<int> uniqueList = Set.from(numbersWithDuplicates).toList();
print(uniqueList);  // [1, 2, 3, 4, 5]

Dieses Muster von Liste → Set → Liste ist extrem gebräuchlich, wenn Sie Daten bereinigen müssen, indem Sie Duplikate entfernen und gleichzeitig die Listenstruktur für die weitere Verarbeitung beibehalten.

challenge icon

Aufgabe

Einfach

Erstelle ein Programm, das ein Datenbereinigungssystem verwaltet, indem doppelte Einträge aus Umfrageantworten entfernt werden. Dein Programm sollte:

  1. Eine Zeichenketteneingabe lesen, die den Titel der Umfrage darstellt
  2. Mehrere Zeichenketteneingaben lesen, die Umfrageantworten darstellen (die Eingabe endet, sobald du "responses_done" erhältst)
  3. Eine List erstellen, um alle ursprünglichen Antworten (einschließlich Duplikaten) zu speichern
  4. Set.from() verwenden, um die List in ein Set umzuwandeln und dabei automatisch Duplikate zu entfernen
  5. toList() verwenden, um das Set wieder in eine List eindeutiger Antworten umzuwandeln
  6. Die Ergebnisse der Datenbereinigung im unten gezeigten exakten Format ausgeben

Wenn der Titel der Umfrage beispielsweise "Customer Satisfaction Survey" lautet und die Antworten "Excellent", "Good", "Excellent", "Fair", "Good", "Excellent", "Poor" sind, sollte dein Programm Folgendes ausgeben:

Survey: Customer Satisfaction Survey
Original responses: [Excellent, Good, Excellent, Fair, Good, Excellent, Poor]
Total responses collected: 7
Converting to Set to remove duplicates...
Unique responses (Set): {Excellent, Good, Fair, Poor}
Converting back to List...
Cleaned responses: [Excellent, Good, Fair, Poor]
Duplicates removed: 3
Final unique responses: 4
Status: Data cleaning completed successfully

Wenn der Titel der Umfrage "Product Feedback" lautet und die Antworten "Like", "Dislike", "Like", "Like" sind, sollte dein Programm Folgendes ausgeben:

Survey: Product Feedback
Original responses: [Like, Dislike, Like, Like]
Total responses collected: 4
Converting to Set to remove duplicates...
Unique responses (Set): {Like, Dislike}
Converting back to List...
Cleaned responses: [Like, Dislike]
Duplicates removed: 2
Final unique responses: 2
Status: Data cleaning completed successfully

Wenn der Titel der Umfrage "Event Rating" lautet und die Antworten "Amazing", "Okay", "Great" sind, sollte dein Programm Folgendes ausgeben:

Survey: Event Rating
Original responses: [Amazing, Okay, Great]
Total responses collected: 3
Converting to Set to remove duplicates...
Unique responses (Set): {Amazing, Okay, Great}
Converting back to List...
Cleaned responses: [Amazing, Okay, Great]
Duplicates removed: 0
Final unique responses: 3
Status: Data cleaning completed successfully

Dein Programm muss das vollständige Muster List → Set → List demonstrieren. Speichere zunächst alle Antworten in einer List, verwende dann Set.from(), um aus der List ein Set zu erstellen, und verwende schließlich toList(), um das Set wieder in eine List umzuwandeln. Berechne die Anzahl der entfernten Duplikate, indem du die endgültige Anzahl eindeutiger Antworten von der ursprünglichen Gesamtanzahl abziehst.

Probier es selbst

import 'dart:io';

void main() {
  // Umfragetitel lesen
  String? surveyTitle = stdin.readLineSync();
  
  // Umfrageantworten lesen bis "responses_done"
  List<String> originalResponses = [];
  String? response;
  while ((response = stdin.readLineSync()) != "responses_done") {
    if (response != null) {
      originalResponses.add(response);
    }
  }
  
  // TODO: Schreiben Sie Ihren Code unten
  // 1. Verwenden Sie Set.from(), um die Liste in ein Set umzuwandeln (entfernt Duplikate)
  // 2. Verwenden Sie toList(), um das Set wieder in eine Liste umzuwandeln
  // 3. Berechnen Sie die entfernten Duplikate und die endgültige Anzahl
  
  // Ergebnisse im erforderlichen Format ausgeben
  print("Survey: $surveyTitle");
  print("Original responses: $originalResponses");
  // Weitere Print-Anweisungen hier hinzufügen
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Dart-Compiler