Ordinare una lista
Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 7 di 65.
Quando hai bisogno di organizzare gli elementi di una lista, Dart mette a disposizione il metodo sort(), che dispone gli elementi in ordine crescente. Questo metodo è particolarmente utile per mettere i nomi in ordine alfabetico o i numeri dal più piccolo al più grande.
Il metodo sort() modifica direttamente la lista originale invece di crearne una nuova ordinata. Quando chiami sort() su una lista, riordina gli elementi esistenti sul posto.
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]Il metodo sort() funziona automaticamente per i tipi di dati comuni, come stringhe e numeri. Per le stringhe, ordina alfabeticamente, mentre per i numeri ordina dal più piccolo al più grande. Questo lo rende uno strumento semplice per organizzare i tuoi dati ogni volta che hai bisogno che gli elementi siano in un ordine prevedibile.
Sfida
FacileCrea un programma che gestisca il menu di un ristorante organizzando i piatti in diverse categorie. Il tuo programma dovrebbe:
- Leggere un input di tipo stringa che rappresenta il nome del ristorante
- Leggere più input di tipo stringa che rappresentano i nomi dei piatti (l’input terminerà quando riceverai una stringa vuota)
- Usare il metodo
sort()per disporre i piatti in ordine alfabetico - Stampare il menu organizzato nel formato esatto mostrato qui sotto
Per esempio, se il nome del ristorante è "Bella Vista" e i piatti sono "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie", il tuo programma dovrebbe produrre:
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 alphabeticallySe il nome del ristorante è "Quick Bites" e i piatti sono "Burger", "Pizza", "Sandwich", il tuo programma dovrebbe produrre:
Restaurant: Quick Bites
Original menu: [Burger, Pizza, Sandwich]
Sorted menu: [Burger, Pizza, Sandwich]
Total dishes: 3
Status: Menu organized alphabeticallySe il nome del ristorante è "Cafe Corner" e viene fornito un solo piatto, "Coffee", il tuo programma dovrebbe produrre:
Restaurant: Cafe Corner
Original menu: [Coffee]
Sorted menu: [Coffee]
Total dishes: 1
Status: Menu organized alphabeticallyIl tuo programma deve usare il metodo sort() per disporre i piatti in ordine alfabetico. Ricorda che sort() modifica la lista originale direttamente, quindi dovrai creare una copia della lista originale prima di ordinarla se vuoi visualizzare sia la versione originale sia quella ordinata.
Provalo tu
import 'dart:io';
void main() {
// Leggi il nome del ristorante
String? restaurantName = stdin.readLineSync();
// Leggi i nomi dei piatti fino a una stringa vuota
List<String> dishes = [];
String? dish;
while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
dishes.add(dish);
}
// TODO: Scrivi il tuo codice qui sotto
// Crea una copia della lista originale e ordinala
// Calcola il numero totale di piatti
// Stampa il formato di output richiesto
// Mostra i risultati
// print("Restaurant: $restaurantName");
// print("Original menu: $dishes");
// print("Sorted menu: $sortedDishes");
// print("Total dishes: $totalDishes");
// print("Status: Menu organized alphabetically");
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Manipolazione avanzata delle liste
Proprietà delle liste: primo e ultimoStato della lista: isEmpty e isNotEmpInvertire una listaAggiungere a una lista: insertRimozione dalla lista: removeWhereRicerca in una lista: indexOfOrdinare una listaMescolare una listaRiepilogo - Organizzatore di liste4Manipolazione avanzata delle mappe
Iterare su una mappaVerificare chiavi e valoriProprietà delle mappe: chiavi e valoriAggiunta condizionale: putIfAbsentRimuovere elementi da una mappaMappe annidateRiepilogo - Aggiornamento dell'inventario2Operazioni funzionali sulle liste
Trasformare con 'map'Filtrare con 'where'Usare '.toList()'Verificare condizioni con 'any'Condizioni con 'every'Trovare con 'firstWhere'Riepilogo - Filtraggio dei dati3Insiemi
Che cos'è un insieme?Creare un insiemeAggiungere e rimuovere elementi dagli insiemiVerificare la presenza di elementi in un insiemeConvertire una lista in un insiemeUnione di insiemiIntersezione di insiemiDifferenza tra insiemiRiepilogo - Lista degli ospiti uniciEsercitati da solo: Compilatore Dart online