Ordenando uma Lista
Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 7 de 65.
Quando você precisa organizar os elementos em uma lista, o Dart fornece o método sort(), que organiza os elementos em ordem crescente. Este método é particularmente útil para colocar nomes em ordem alfabética ou números do menor para o maior.
O método sort() modifica a lista original diretamente, em vez de criar uma nova lista ordenada. Quando você chama sort() em uma lista, ele reorganiza os elementos existentes no local.
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]O método sort() funciona automaticamente para tipos de dados comuns, como strings e números. Para strings, ele ordena alfabeticamente, enquanto para números, ordena do menor para o maior. Isso o torna uma ferramenta direta para organizar seus dados sempre que você precisar de elementos em uma ordem previsível.
Desafio
FácilCrie um programa que gerencie um sistema de menu de restaurante organizando os pratos em diferentes categorias. Seu programa deve:
- Ler uma entrada de string representando o nome do restaurante
- Ler múltiplas entradas de string representando nomes de pratos (a entrada terminará quando você receber uma string vazia)
- Usar o método
sort()para organizar os pratos em ordem alfabética - Imprimir o menu organizado no formato exato mostrado abaixo
Por exemplo, se o nome do restaurante for "Bella Vista" e os pratos forem "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie", seu programa deve exibir:
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 o nome do restaurante for "Quick Bites" e os pratos forem "Burger", "Pizza", "Sandwich", seu programa deve exibir:
Restaurant: Quick Bites
Original menu: [Burger, Pizza, Sandwich]
Sorted menu: [Burger, Pizza, Sandwich]
Total dishes: 3
Status: Menu organized alphabeticallySe o nome do restaurante for "Cafe Corner" e apenas um prato "Coffee" for fornecido, seu programa deve exibir:
Restaurant: Cafe Corner
Original menu: [Coffee]
Sorted menu: [Coffee]
Total dishes: 1
Status: Menu organized alphabeticallySeu programa deve usar o método sort() para organizar os pratos em ordem alfabética. Lembre-se de que o sort() modifica a lista original no local, então você precisará criar uma cópia da lista original antes de ordenar se quiser exibir tanto a versão original quanto a ordenada.
Folha de consulta
O método sort() organiza os elementos da lista em ordem crescente e modifica a lista original diretamente:
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 strings, o sort() organiza os elementos em ordem alfabética. Para números, ele ordena do menor para o maior. Como o sort() modifica a lista original no local (in-place), crie uma cópia primeiro se precisar preservar a ordem original.
Experimente você mesmo
import 'dart:io';
void main() {
// Ler o nome do restaurante
String? restaurantName = stdin.readLineSync();
// Ler os nomes dos pratos até encontrar uma string vazia
List<String> dishes = [];
String? dish;
while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
dishes.add(dish);
}
// TODO: Escreva seu código abaixo
// Criar uma cópia da lista original e ordená-la
// Calcular o total de pratos
// Imprimir o formato de saída exigido
// Exibir os resultados
// print("Restaurant: $restaurantName");
// print("Original menu: $dishes");
// print("Sorted menu: $sortedDishes");
// print("Total dishes: $totalDishes");
// print("Status: Menu organized alphabetically");
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Manipulação Avançada de Listas
Propriedades de Lista: first & lastEstado da Lista: isEmpty & isNotEmptyInvertendo uma ListaAdicionando a uma Lista: insertRemoção em Listas: removeWhereBuscando em uma Lista: indexOfOrdenando uma ListaEmbaralhando uma ListaRecapitulação - Organizador de Listas4Manipulação Avançada de Mapas
Iterando sobre um MapVerificando Chaves e ValoresPropriedades do Map: keys & valuesAdição Condicional: putIfAbsentRemovendo Entradas de um MapMaps AninhadosRecapitulação - Atualização de Inventário2Operações Funcionais em Listas
Transformando com 'map'Filtrando com 'where'Usando '.toList()'Verificando Condições com 'any'Condições com 'every'Encontrando com 'firstWhere'Recapitulação - Filtragem de Dados5Projeto: Cálculo de Carrinho de Compras
Configuração do ProjetoAdicionando Itens ao Carrinho3Conjuntos
O que é um Conjunto?Criando um ConjuntoAdicionando e Removendo de ConjuntosVerificando Elementos em um ConjuntoConvertendo uma Lista para um ConjuntoUnião de ConjuntosInterseção de ConjuntosDiferença de ConjuntosRecapitulação - Lista de Convidados Únicos