Trier une liste
Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 7 sur 65.
Lorsque vous avez besoin d'organiser les éléments d'une liste, Dart fournit la méthode sort() qui organise les éléments par ordre croissant. Cette méthode est particulièrement utile pour classer des noms par ordre alphabétique ou des nombres du plus petit au plus grand.
La méthode sort() modifie directement la liste d'origine plutôt que de créer une nouvelle liste triée. Lorsque vous appelez sort() sur une liste, elle réorganise les éléments existants sur place.
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]La méthode sort() fonctionne automatiquement pour les types de données courants comme les chaînes de caractères et les nombres. Pour les chaînes de caractères, elle trie par ordre alphabétique, tandis que pour les nombres, elle trie du plus petit au plus grand. Cela en fait un outil simple pour organiser vos données chaque fois que vous avez besoin d'éléments dans un ordre prévisible.
Défi
FacileCréez un programme qui gère le système de menu d'un restaurant en organisant les plats dans différentes catégories. Votre programme doit :
- Lire une chaîne de caractères en entrée représentant le nom du restaurant
- Lire plusieurs chaînes de caractères en entrée représentant les noms des plats (la saisie s'arrête lorsque vous recevez une chaîne vide)
- Utiliser la méthode
sort()pour organiser les plats par ordre alphabétique - Afficher le menu organisé exactement selon le format indiqué ci-dessous
Par exemple, si le nom du restaurant est "Bella Vista" et que les plats sont "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie", votre programme doit afficher :
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 alphabeticallySi le nom du restaurant est "Quick Bites" et que les plats sont "Burger", "Pizza", "Sandwich", votre programme doit afficher :
Restaurant: Quick Bites
Original menu: [Burger, Pizza, Sandwich]
Sorted menu: [Burger, Pizza, Sandwich]
Total dishes: 3
Status: Menu organized alphabeticallySi le nom du restaurant est "Cafe Corner" et qu'un seul plat "Coffee" est fourni, votre programme doit afficher :
Restaurant: Cafe Corner
Original menu: [Coffee]
Sorted menu: [Coffee]
Total dishes: 1
Status: Menu organized alphabeticallyVotre programme doit utiliser la méthode sort() pour organiser les plats par ordre alphabétique. N'oubliez pas que sort() modifie la liste originale sur place, vous devrez donc créer une copie de la liste originale avant de trier si vous souhaitez afficher à la fois la version originale et la version triée.
Aide-mémoire
La méthode sort() trie les éléments de la liste par ordre croissant et modifie directement la liste originale :
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]Pour les chaînes de caractères, sort() trie les éléments par ordre alphabétique. Pour les nombres, elle trie du plus petit au plus grand. Comme sort() modifie la liste originale en place, créez d'abord une copie si vous avez besoin de préserver l'ordre original.
Essayez vous-même
import 'dart:io';
void main() {
// Lire le nom du restaurant
String? restaurantName = stdin.readLineSync();
// Lire les noms des plats jusqu'à une chaîne vide
List<String> dishes = [];
String? dish;
while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
dishes.add(dish);
}
// TODO: Écrivez votre code ci-dessous
// Créer une copie de la liste originale et la trier
// Calculer le nombre total de plats
// Imprimer le format de sortie requis
// Afficher les résultats
// print("Restaurant: $restaurantName");
// print("Original menu: $dishes");
// print("Sorted menu: $sortedDishes");
// print("Total dishes: $totalDishes");
// print("Status: Menu organized alphabetically");
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Manipulation avancée des listes
Propriétés de liste : first & lastÉtat de la liste : isEmpty & isNotEmptyInverser une listeAjouter à une liste : insertSuppression dans une liste : removeWhereRechercher dans une liste : indexOfTrier une listeMélanger une listeRécapitulatif - Organisateur de liste4Manipulation avancée des Maps
Itérer sur une MapVérifier les clés et les valeursPropriétés de Map : keys & valuesAjout conditionnel : putIfAbsentSupprimer des entrées d'une MapMaps imbriquéesRécapitulatif - Mise à jour de l'inventaire2Opérations fonctionnelles sur les listes
Transformer avec 'map'Filtrer avec 'where'Utiliser '.toList()'Vérifier des conditions avec 'any'Conditions avec 'every'Trouver avec 'firstWhere'Récapitulatif - Filtrage de données3Les Ensembles
Qu'est-ce qu'un ensemble ?Créer un ensembleAjouter et supprimer des éléments d'un ensembleVérifier la présence d'éléments dans un ensembleConvertir une liste en ensembleUnion d'ensemblesIntersection d'ensemblesDifférence d'ensemblesRécapitulatif - Liste d'invités uniques