Ordenar una lista
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 7 de 65.
Cuando necesites organizar los elementos de una lista, Dart proporciona el método sort() que ordena los elementos en orden ascendente. Este método es especialmente útil para poner nombres en orden alfabético o números de menor a mayor.
El método sort() modifica la lista original directamente en lugar de crear una nueva lista ordenada. Cuando llamas a sort() en una lista, reorganiza los elementos existentes en su lugar.
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]El método sort() funciona automáticamente para tipos de datos comunes como cadenas y números. Para las cadenas, ordena alfabéticamente, mientras que para los números, ordena de menor a mayor. Esto lo convierte en una herramienta sencilla para organizar tus datos siempre que necesites elementos en un orden predecible.
Desafío
FácilCrea un programa que gestione el sistema de menú de un restaurante organizando los platos en diferentes categorías. Tu programa debe:
- Leer una entrada de cadena que represente el nombre del restaurante
- Leer múltiples entradas de cadena que representen nombres de platos (la entrada terminará cuando recibas una cadena vacía)
- Usar el método
sort()para organizar los platos en orden alfabético - Imprimir el menú organizado en el formato exacto que se muestra a continuación
Por ejemplo, si el nombre del restaurante es "Bella Vista" y los platos son "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie", tu programa debería mostrar:
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 el nombre del restaurante es "Quick Bites" y los platos son "Burger", "Pizza", "Sandwich", tu programa debería mostrar:
Restaurant: Quick Bites
Original menu: [Burger, Pizza, Sandwich]
Sorted menu: [Burger, Pizza, Sandwich]
Total dishes: 3
Status: Menu organized alphabeticallySi el nombre del restaurante es "Cafe Corner" y solo se proporciona un plato "Coffee", tu programa debería mostrar:
Restaurant: Cafe Corner
Original menu: [Coffee]
Sorted menu: [Coffee]
Total dishes: 1
Status: Menu organized alphabeticallyTu programa debe usar el método sort() para organizar los platos alfabéticamente. Recuerda que sort() modifica la lista original en su lugar, por lo que necesitarás crear una copia de la lista original antes de ordenar si deseas mostrar tanto la versión original como la ordenada.
Hoja de referencia
El método sort() organiza los elementos de la lista en orden ascendente y modifica la lista original directamente:
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]Para las cadenas, sort() organiza los elementos alfabéticamente. Para los números, los ordena de menor a mayor. Dado que sort() modifica la lista original en su lugar, crea una copia primero si necesitas preservar el orden original.
Pruébalo tú mismo
import 'dart:io';
void main() {
// Leer el nombre del restaurante
String? restaurantName = stdin.readLineSync();
// Leer nombres de platos hasta encontrar una cadena vacía
List<String> dishes = [];
String? dish;
while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
dishes.add(dish);
}
// TODO: Escribe tu código a continuación
// Crear una copia de la lista original y ordenarla
// Calcular el total de platos
// Imprimir el formato de salida requerido
// Mostrar los resultados
// print("Restaurant: $restaurantName");
// print("Original menu: $dishes");
// print("Sorted menu: $sortedDishes");
// print("Total dishes: $totalDishes");
// print("Status: Menu organized alphabetically");
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados única