Invertendo uma Lista
Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 3 de 65.
Às vezes, você precisa visualizar os elementos de uma lista em ordem inversa. O Dart fornece a propriedade .reversed que cria uma visualização invertida da sua lista sem alterar a lista original.
A propriedade .reversed retorna um iterável que apresenta os elementos da lista em ordem inversa. Isso significa que o último elemento aparece primeiro, o penúltimo aparece em segundo e assim por diante.
List<int> numbers = [1, 2, 3, 4, 5];
var reversedNumbers = numbers.reversed;
print(reversedNumbers); // (5, 4, 3, 2, 1)
// A lista original permanece inalterada
print(numbers); // [1, 2, 3, 4, 5]Um detalhe importante é que .reversed retorna um iterável, não uma lista. Se você precisar trabalhar com ele como uma lista, você pode convertê-lo usando .toList(). Esta propriedade é particularmente útil quando você precisa processar dados em ordem inversa enquanto mantém sua lista original intacta.
Desafio
FácilCrie um programa que analise uma lista de leitura exibindo os livros tanto na ordem original quanto na ordem invertida. Seu programa deve:
- Ler uma entrada de string representando o título da lista de leitura
- Ler múltiplas entradas de string representando títulos de livros (a entrada terminará quando você receber uma string vazia)
- Usar a propriedade
.reversedpara criar uma visualização invertida da lista de livros - Imprimir a análise da lista de leitura no formato exato mostrado abaixo
Por exemplo, se o título da lista de leitura for "Summer Reading" e os livros forem "1984", "To Kill a Mockingbird", "The Great Gatsby", seu programa deve exibir:
Reading List: Summer Reading
Books in original order: (1984, To Kill a Mockingbird, The Great Gatsby)
Books in reversed order: (To Kill a Mockingbird, The Great Gatsby, 1984)
Total books: 3Se o título da lista de leitura for "Quick Reads" e apenas um livro "Animal Farm" for fornecido, seu programa deve exibir:
Reading List: Quick Reads
Books in original order: (Animal Farm)
Books in reversed order: (Animal Farm)
Total books: 1Seu programa deve usar a propriedade .reversed para exibir os livros em ordem inversa. Lembre-se que .reversed retorna um iterável, portanto, quando você o imprimir, ele será exibido com parênteses em vez de colchetes.
Folha de consulta
Use a propriedade .reversed para visualizar os elementos da lista em ordem inversa sem modificar a lista original:
List<int> numbers = [1, 2, 3, 4, 5];
var reversedNumbers = numbers.reversed;
print(reversedNumbers); // (5, 4, 3, 2, 1)
// A lista original permanece inalterada
print(numbers); // [1, 2, 3, 4, 5]A propriedade .reversed retorna um iterável, não uma lista. Para convertê-la de volta para uma lista, use .toList().
Experimente você mesmo
import 'dart:io';
void main() {
// Leia o título da lista de leitura
String? title = stdin.readLineSync();
// Leia os títulos dos livros até encontrar uma string vazia
List<String> books = [];
String? book;
while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
books.add(book);
}
// TODO: Escreva seu código aqui
// Use a propriedade .reversed para criar uma visualização invertida da lista de livros
// Imprima a saída no formato exigido
}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