Menu
Coddy logo textTech

Übersicht über List, Set und Map

Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 63 von 110.

Dart bietet drei grundlegende Collection-Typen, die Sie bei der Entwicklung von Anwendungen ständig verwenden werden. Jeder dient einem anderen Zweck für die Organisation und den Zugriff auf Daten.

Eine Liste ist eine geordnete Sammlung, deren Elemente über ihren Index abgerufen werden. Elemente behalten ihre Einfügereihenfolge bei, und Duplikate sind zulässig:

var fruits = ['apple', 'banana', 'apple'];
print(fruits[0]);      // apple
print(fruits.length);  // 3

Ein Set ist eine ungeordnete Sammlung von eindeutigen Elementen. Wenn Sie versuchen, ein Duplikat hinzuzufügen, wird es einfach ignoriert:

var uniqueNumbers = {1, 2, 3, 2, 1};
print(uniqueNumbers);  // {1, 2, 3}

Eine Map speichert Schlüssel-Wert-Paare, mit denen Sie Werte anhand ihres zugehörigen Schlüssels nachschlagen können:

var ages = {'Alice': 30, 'Bob': 25};
print(ages['Alice']);  // 30

Hier ist ein kurzer Vergleich:

SammlungGeordnetDuplikateZugriff über
ListeJaErlaubtIndex
MengeNeinNicht erlaubtEnthaltensein-Prüfung
MapNein*Eindeutige SchlüsselSchlüssel

Diese Sammlungen werden noch leistungsfähiger, wenn sie mit Generics kombiniert werden, die Sie in den kommenden Lektionen erkunden werden, um typsichere Sammlungen zu erstellen, die mit Ihren benutzerdefinierten Klassen funktionieren.

challenge icon

Aufgabe

Einfach

Wir erstellen ein Klassenverwaltungssystem, das alle drei Sammlungstypen verwendet, um Schülerdaten auf unterschiedliche Weise zu organisieren. Du wirst sehen, wie Listen, Mengen und Maps jeweils unterschiedliche Zwecke erfüllen, wenn dieselben Informationen verwaltet werden.

Du organisierst deinen Code in zwei Dateien:

  • classroom.dart: Erstelle eine Classroom-Klasse, die Schülerdaten mithilfe aller drei Sammlungstypen verwaltet:
    • Eine List<String> namens attendanceOrder, um die Schüler in der Reihenfolge ihrer Ankunft zu erfassen (Duplikate sind erlaubt, wenn sich ein Schüler mehrmals anmeldet)
    • Eine Set<String> namens uniqueStudents, um zu erfassen, welche Schüler anwesend sind (keine Duplikate)
    • Eine Map<String, int> namens scores, um die Testergebnisse der einzelnen Schüler zu speichern
    Deine Classroom-Klasse sollte über folgende Methoden verfügen:
    • recordArrival(String name) – fügt den Namen sowohl zur Anwesenheitsliste als auch zur Menge der eindeutigen Schüler hinzu
    • setScore(String name, int score) – speichert die Punktzahl des Schülers in der Map
    • printReport() – gibt den Klassenbericht aus (das Format ist unten dargestellt)
  • main.dart: Importiere deine classroom-Datei und führe das System vor:
    • Erstelle eine Classroom-Instanz
    • Erfasse die Ankünfte in dieser Reihenfolge: 'Alice', 'Bob', 'Alice', 'Carol', 'Bob'
    • Lege die Punktzahlen fest: Alice = 95, Bob = 87, Carol = 92
    • Rufe printReport() auf

Die Methode printReport() sollte Folgendes ausgeben:

Arrival Order: [Alice, Bob, Alice, Carol, Bob]
Unique Students: {Alice, Bob, Carol}
Scores: {Alice: 95, Bob: 87, Carol: 92}

Beachte, wie die Liste jede Ankunft (einschließlich Duplikaten) beibehält, die Menge automatisch nur eindeutige Namen enthält und die Map jeden Schüler mit seiner Punktzahl verknüpft. Jeder Sammlungstyp erfüllt seinen Zweck perfekt!

Erwartete Ausgabe:

Arrival Order: [Alice, Bob, Alice, Carol, Bob]
Unique Students: {Alice, Bob, Carol}
Scores: {Alice: 95, Bob: 87, Carol: 92}

Probier es selbst

import 'classroom.dart';

void main() {
  // TODO: Erstelle eine Classroom-Instanz
  
  // TODO: Erfasse die Ankünfte in dieser Reihenfolge: 'Alice', 'Bob', 'Alice', 'Carol', 'Bob'
  
  // TODO: Setze die Punktzahlen: Alice = 95, Bob = 87, Carol = 92
  
  // TODO: Rufe printReport() auf, um die Klassendaten anzuzeigen
}
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 Objektorientierte Programmierung

Übe selbstständig: Online-Dart-Compiler