Eine Liste sortieren
Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 7 von 65.
Wenn Sie die Elemente in einer Liste organisieren müssen, bietet Dart die Methode sort() an, die Elemente in aufsteigender Reihenfolge anordnet. Diese Methode ist besonders nützlich, um Namen in alphabetischer Reihenfolge oder Zahlen vom kleinsten zum größten Wert zu sortieren.
Die sort()-Methode verändert die ursprüngliche Liste direkt, anstatt eine neue sortierte Liste zu erstellen. Wenn Sie sort() auf einer Liste aufrufen, ordnet sie die vorhandenen Elemente direkt an Ort und Stelle um.
List<String> names = ['Charlie', 'Alice', 'Bob'];
names.sort();
print(names); // ['Alice', 'Bob', 'Charlie']
List<int> scores = [85, 92, 78, 96];
scores.sort();
print(scores); // [78, 85, 92, 96]Die sort()-Methode funktioniert automatisch für gängige Datentypen wie Strings und Zahlen. Bei Strings sortiert sie alphabetisch, während sie bei Zahlen vom niedrigsten zum höchsten Wert sortiert. Dies macht sie zu einem unkomplizierten Werkzeug für die Organisation Ihrer Daten, wann immer Sie Elemente in einer vorhersehbaren Reihenfolge benötigen.
Aufgabe
EinfachErstellen Sie ein Programm, das ein Restaurant-Menüsystem verwaltet, indem es Gerichte in verschiedenen Kategorien organisiert. Ihr Programm sollte:
- Einen String-Input einlesen, der den Restaurantnamen darstellt
- Mehrere String-Inputs einlesen, die Gerichtnamen darstellen (die Eingabe endet, wenn Sie einen leeren String erhalten)
- Die Methode
sort()verwenden, um die Gerichte in alphabetischer Reihenfolge anzuordnen - Das organisierte Menü in dem unten gezeigten exakten Format ausgeben
Wenn zum Beispiel der Restaurantname "Bella Vista" ist und die Gerichte "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie" sind, sollte Ihr Programm Folgendes ausgeben:
Restaurant: Bella Vista
Original menu: [Pasta Carbonara, Caesar Salad, Grilled Salmon, Apple Pie]
Sorted menu: [Apple Pie, Caesar Salad, Grilled Salmon, Pasta Carbonara]
Total dishes: 4
Status: Menu organized alphabeticallyWenn der Restaurantname "Quick Bites" ist und die Gerichte "Burger", "Pizza", "Sandwich" sind, sollte Ihr Programm Folgendes ausgeben:
Restaurant: Quick Bites
Original menu: [Burger, Pizza, Sandwich]
Sorted menu: [Burger, Pizza, Sandwich]
Total dishes: 3
Status: Menu organized alphabeticallyWenn der Restaurantname "Cafe Corner" ist und nur ein Gericht "Coffee" angegeben wird, sollte Ihr Programm Folgendes ausgeben:
Restaurant: Cafe Corner
Original menu: [Coffee]
Sorted menu: [Coffee]
Total dishes: 1
Status: Menu organized alphabeticallyIhr Programm muss die Methode sort() verwenden, um die Gerichte alphabetisch zu ordnen. Denken Sie daran, dass sort() die ursprüngliche Liste direkt (in place) modifiziert. Sie müssen also eine Kopie der ursprünglichen Liste erstellen, bevor Sie sortieren, wenn Sie sowohl die ursprüngliche als auch die sortierte Version anzeigen möchten.
Spickzettel
Die Methode sort() ordnet Listenelemente in aufsteigender Reihenfolge an und modifiziert die ursprüngliche Liste direkt:
List<String> names = ['Charlie', 'Alice', 'Bob'];
names.sort();
print(names); // ['Alice', 'Bob', 'Charlie']
List<int> scores = [85, 92, 78, 96];
scores.sort();
print(scores); // [78, 85, 92, 96]Bei Strings ordnet sort() die Elemente alphabetisch an. Bei Zahlen sortiert sie vom niedrigsten zum höchsten Wert. Da sort() die ursprüngliche Liste direkt modifiziert, erstellen Sie zuerst eine Kopie, wenn Sie die ursprüngliche Reihenfolge beibehalten müssen.
Probier es selbst
import 'dart:io';
void main() {
// Restaurantnamen lesen
String? restaurantName = stdin.readLineSync();
// Gerichtnamen lesen, bis eine leere Zeichenfolge eingegeben wird
List<String> dishes = [];
String? dish;
while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
dishes.add(dish);
}
// TODO: Schreiben Sie Ihren Code unten
// Erstellen Sie eine Kopie der ursprünglichen Liste und sortieren Sie diese
// Berechnen Sie die Gesamtzahl der Gerichte
// Geben Sie das erforderliche Ausgabeformat aus
// Ergebnisse ausgeben
// print("Restaurant: $restaurantName");
// print("Original menu: $dishes");
// print("Sorted menu: $sortedDishes");
// print("Total dishes: $totalDishes");
// print("Status: Menu organized alphabetically");
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Listenmanipulation
Listen-Eigenschaften: first & lastListen-Status: isEmpty & isNotEmptyEine Liste umkehrenHinzufügen zu einer Liste: insertElemente aus Liste entfernen: removeWhereSuchen in einer Liste: indexOfEine Liste sortierenEine Liste mischenZusammenfassung – Listen-Organizer4Fortgeschrittene Map-Manipulation
Über eine Map iterierenPrüfen auf Schlüssel und WerteMap-Eigenschaften: keys & valuesBedingtes Hinzufügen: putIfAbsentEinträge aus einer Map entfernenVerschachtelte MapsRückblick – Inventar-Update7Fortgeschrittene Funktionen
Anonyme FunktionenFunktionen als Argumente übergebenClosures verstehenEinführung in die RekursionRekursive Funktion: CountdownRekursive Funktion: FakultätZusammenfassung – List Processor10Abschluss-Herausforderungen
Herausforderung: NotensortiererHerausforderung: VokalzählerHerausforderung: FizzBuzz2Funktionale Listenoperationen
Transformieren mit 'map'Filtern mit 'where''.toList()' verwendenBedingungen prüfen mit 'any'Bedingungen mit 'every'Suchen mit 'firstWhere'Zusammenfassung – Datenfilterung3Sets
Was ist ein Set?Ein Set erstellenHinzufügen und Entfernen in SetsPrüfen auf Elemente in einem SetEine Liste in ein Set umwandelnSet-VereinigungSet-SchnittmengeSet-DifferenzRückblick – Einzigartige Gästeliste