Menu
Coddy logo textTech

Überblick ü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 List ist eine geordnete Sammlung, bei der auf Elemente über einen Index zugegriffen wird. Die Elemente behalten ihre Einfügereihenfolge bei und Duplikate sind erlaubt:

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:

CollectionGeordnetDuplikateZugriff über
ListJaErlaubtIndex
SetNeinNicht erlaubtEnthält-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

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

Sie werden Ihren Code in zwei Dateien organisieren:

  • classroom.dart: Erstellen Sie eine Classroom-Klasse, die Schülerdaten mit allen drei Sammlungstypen verwaltet:
    • Eine List<String> namens attendanceOrder, um Schüler in der Reihenfolge ihrer Ankunft zu erfassen (Duplikate sind erlaubt, wenn sich ein Schüler mehrmals anmeldet)
    • Ein Set<String> namens uniqueStudents, um zu erfassen, welche Schüler anwesend sind (keine Duplikate)
    • Eine Map<String, int> namens scores, um das Testergebnis jedes Schülers zu speichern
    Ihre Classroom-Klasse sollte diese Methoden haben:
    • recordArrival(String name) - fügt den Namen sowohl der Anwesenheitsliste als auch dem Set der eindeutigen Schüler hinzu
    • setScore(String name, int score) - speichert die Punktzahl des Schülers in der Map
    • printReport() - gibt den Klassenbericht aus (Format unten gezeigt)
  • main.dart: Importieren Sie Ihre Classroom-Datei und demonstrieren Sie das System:
    • Erstellen Sie eine Classroom-Instanz
    • Erfassen Sie die Ankünfte in dieser Reihenfolge: 'Alice', 'Bob', 'Alice', 'Carol', 'Bob'
    • Setzen Sie die Punktzahlen: Alice = 95, Bob = 87, Carol = 92
    • Rufen Sie 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}

Beachten Sie, wie die List jede Ankunft (einschließlich Duplikate) bewahrt, das Set automatisch nur eindeutige Namen behä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}

Spickzettel

Dart bietet drei Kern-Collection-Typen zur Organisation von Daten:

List - Eine geordnete Sammlung, bei der auf Elemente über einen Index zugegriffen wird. Duplikate sind erlaubt:

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

Set - Eine ungeordnete Sammlung von eindeutigen Elementen. Duplikate werden automatisch ignoriert:

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

Map - Speichert Schlüssel-Wert-Paare für die Suche nach Schlüsseln:

var ages = {'Alice': 30, 'Bob': 25};
print(ages['Alice']);  // 30
SammlungGeordnetDuplikateZugriff über
ListJaErlaubtIndex
SetNeinNicht erlaubtEnthält-Prüfung
MapNein*Eindeutige SchlüsselSchlüssel

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