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

Erstellen Sie ein Programm, das ein Datenbereinigungssystem verwaltet, indem es doppelte Einträge aus Umfrageantworten entfernt. Ihr Programm sollte:

  1. Einen String-Input einlesen, der den Umfragetitel darstellt
  2. Mehrere String-Inputs einlesen, die Umfrageantworten darstellen (die Eingabe endet, wenn Sie "responses_done" erhalten)
  3. Eine List erstellen, um alle ursprünglichen Antworten (einschließlich Duplikate) zu speichern
  4. Set.from() verwenden, um die Liste in ein Set umzuwandeln, wodurch Duplikate automatisch entfernt werden
  5. toList() verwenden, um das Set wieder in eine List mit eindeutigen Antworten umzuwandeln
  6. Die Ergebnisse der Datenbereinigung im unten gezeigten exakten Format ausgeben

Wenn der Umfragetitel beispielsweise "Customer Satisfaction Survey" lautet und die Antworten "Excellent", "Good", "Excellent", "Fair", "Good", "Excellent", "Poor" sind, sollte Ihr 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 Umfragetitel "Product Feedback" lautet und die Antworten "Like", "Dislike", "Like", "Like" sind, sollte Ihr 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 Umfragetitel "Event Rating" lautet und die Antworten "Amazing", "Okay", "Great" sind, sollte Ihr 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

Ihr Programm muss das vollständige Muster List → Set → List demonstrieren. Speichern Sie zuerst alle Antworten in einer List, verwenden Sie dann Set.from(), um ein Set aus der List zu erstellen, und verwenden Sie schließlich toList(), um das Set wieder in eine List umzuwandeln. Berechnen Sie die Anzahl der entfernten Duplikate, indem Sie die endgültige Anzahl der eindeutigen Werte von der ursprünglichen Gesamtzahl subtrahieren.

Spickzettel

Um Duplikate aus einer List zu entfernen, konvertieren Sie diese mit Set.from() in ein Set:

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}

Um ein Set wieder in eine List umzuwandeln, verwenden Sie toList():

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

Das Muster List → Set → List wird häufig zur Datenbereinigung verwendet, während die Listenstruktur beibehalten wird.

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