Skip to content

Kapitel 6: Dart Sammlungstypen

6.1 Überblick über Sammlungen

Dart hat drei Haupt-Sammlungstypen:

  • List: Geordnete Sammlung
  • Set: Ungeordnete, duplicate-freie Sammlung
  • Map: Schlüssel-Wert-Paar-Sammlung

6.2 List (Liste)

Deklaration und Initialisierung

dart
void main() {
  // Variable Länge
  List<String> früchte = ['Apfel', 'Banane'];
  
  // Feste Länge
  List<int> zahlen = List.filled(3, 0);
}

Häufige Operationen

dart
void main() {
  List<String> früchte = ['Apfel', 'Banane'];
  
  // Hinzufügen
  früchte.add('Kirsche');
  
  // Löschen
  früchte.remove('Banane');
  
  // Ändern
  früchte[0] = 'Orange';
  
  // Abfragen
  print(früchte[0]);  // Orange
  print(früchte.length);  // 2
  print(früchte.isEmpty);  // false
  print(früchte.contains('Apfel'));  // false
  
  // Sortieren
  List<int> zahlen = [3, 1, 4, 1, 5];
  zahlen.sort();
  print(zahlen);
}

6.3 Set (Menge)

Deklaration und Initialisierung

dart
void main() {
  Set<String> früchte = {'Apfel', 'Banane', 'Apfel'};  // Duplikate werden entfernt
  print(früchte);  // {Apfel, Banane}
}

Häufige Operationen

dart
void main() {
  Set<int> a = {1, 2, 3};
  Set<int> b = {3, 4, 5};
  
  // Hinzufügen
  a.add(4);
  
  // Löschen
  a.remove(1);
  
  // Duplikate entfernen
  List<int> list = [1, 2, 2, 3, 3];
  Set<int> set = list.toSet();
  print(set);  // {1, 2, 3}
  
  // Schnittmenge
  print(a.intersection(b));  // {3, 4}
  
  // Vereinigungsmenge
  print(a.union(b));  // {2, 3, 4, 5}
}

6.4 Map (Karte)

Deklaration und Initialisierung

dart
void main() {
  Map<String, int> alter = {
    'Alice': 25,
    'Bob': 30
  };
}

Häufige Operationen

dart
void main() {
  Map<String, int> alter = {
    'Alice': 25,
    'Bob': 30
  };
  
  // Hinzufügen
  alter['Charlie'] = 35;
  
  // Löschen
  alter.remove('Bob');
  
  // Ändern
  alter['Alice'] = 26;
  
  // Abfragen
  print(alter['Alice']);  // 26
  print(alter.keys);  // (Alice, Charlie)
  print(alter.values);  // (26, 35)
  print(alter.containsKey('Alice'));  // true
  print(alter.containsValue(30));  // false
}

6.5 Sammlungs-Durchlauftechniken

dart
void main() {
  List<int> zahlen = [1, 2, 3, 4, 5];
  
  // for-in
  for (int zahl in zahlen) {
    print(zahl);
  }
  
  // forEach
  zahlen.forEach((zahl) {
    print(zahl);
  });
  
  // where (Filtern)
  List<int> gerade = zahlen.where((zahl) => zahl % 2 == 0).toList();
  print(gerade);  // [2, 4]
}

6.6 Praxisbeispiel

dart
void main() {
  // Studenteninformationen speichern
  List<Map<String, dynamic>> studenten = [];
  
  studenten.add({'name': 'Alice', 'alter': 20, 'note': 85});
  studenten.add({'name': 'Bob', 'alter': 21, 'note': 90});
  studenten.add({'name': 'Charlie', 'alter': 19, 'note': 78});
  
  // Hohe Noten filtern
  List<Map<String, dynamic>> hoheNoten = studenten.where((student) => student['note'] >= 80).toList();
  
  // Studenten durchlaufen und anzeigen
  for (Map<String, dynamic> student in hoheNoten) {
    print('Name: ' + student['name'] + ', Note: ' + student['note'].toString());
  }
}

Frei für alle Anfänger