Adicionando a uma Lista: insert
Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 4 de 65.
Quando você precisa adicionar um elemento a uma posição específica em uma lista, o método insert() oferece controle preciso sobre onde o novo elemento vai. Ao contrário do método add(), que sempre adiciona elementos ao final de uma lista, o insert() permite que você coloque um elemento em qualquer posição que escolher.
O método insert() recebe dois parâmetros: a posição do índice onde você deseja inserir o elemento e o próprio elemento. Quando você insere um elemento, todos os elementos existentes naquela posição e além dela se deslocam uma posição para a direita.
List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];
// Insere uma nova tarefa no início (índice 0)
tasks.insert(0, 'Check emails');
print(tasks); // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']Este método é particularmente útil quando a ordem dos elementos importa, como listas de prioridade, cronogramas ou qualquer situação em que você precise manter uma sequência específica. A capacidade de inserir em qualquer posição torna o insert() uma ferramenta poderosa para gerenciar coleções ordenadas.
Desafio
FácilCrie um programa que gerencie um sistema de tarefas prioritárias inserindo tarefas urgentes em posições específicas em uma lista de tarefas existente. Seu programa deve:
- Ler uma entrada de string representando o nome da lista de tarefas
- Ler múltiplas entradas de string representando tarefas existentes (a entrada terminará quando você receber uma string vazia)
- Ler uma entrada de string representando uma tarefa urgente para inserir
- Ler uma entrada de número inteiro representando a posição onde a tarefa urgente deve ser inserida
- Usar o método
insert()para adicionar a tarefa urgente na posição especificada - Imprimir a lista de tarefas atualizada no formato exato mostrado abaixo
Por exemplo, se o nome da lista de tarefas for "Work Schedule", as tarefas existentes forem "Review documents", "Team meeting", "Submit report", a tarefa urgente for "Client call" e a posição for 1, seu programa deve exibir:
Task List: Work Schedule
Original tasks: [Review documents, Team meeting, Submit report]
Inserted: Client call at position 1
Updated tasks: [Review documents, Client call, Team meeting, Submit report]
Total tasks: 4Se o nome da lista de tarefas for "Daily Goals", as tarefas existentes forem "Exercise", "Read book", a tarefa urgente for "Buy groceries" e a posição for 0, seu programa deve exibir:
Task List: Daily Goals
Original tasks: [Exercise, Read book]
Inserted: Buy groceries at position 0
Updated tasks: [Buy groceries, Exercise, Read book]
Total tasks: 3Seu programa deve usar o método insert() para adicionar a tarefa urgente na posição especificada. A entrada da posição sempre será um índice válido (entre 0 e o comprimento da lista de tarefas existente).
Folha de consulta
O método insert() permite que você adicione um elemento em uma posição específica em uma lista. Ele recebe dois parâmetros: a posição do índice e o elemento a ser inserido.
List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];
// Inserir no índice 0 (início)
tasks.insert(0, 'Check emails');
print(tasks); // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']Quando você insere um elemento, todos os elementos existentes naquela posição e além se deslocam uma posição para a direita. Este método é útil para manter coleções ordenadas onde a posição importa.
Experimente você mesmo
import 'dart:io';
void main() {
// Ler o nome da lista de tarefas
String? taskListName = stdin.readLineSync();
// Ler tarefas existentes até encontrar uma string vazia
List<String> tasks = [];
while (true) {
String? task = stdin.readLineSync();
if (task == null || task.isEmpty) {
break;
}
tasks.add(task);
}
// Ler tarefa urgente e posição
String? urgentTask = stdin.readLineSync();
int position = int.parse(stdin.readLineSync()!);
// TODO: Escreva seu código abaixo
// Use o método insert() para adicionar a tarefa urgente na posição especificada
// Imprimir os resultados no formato exigido
print('Task List: $taskListName');
print('Original tasks: $tasks');
print('Inserted: $urgentTask at position $position');
// Imprimir tarefas atualizadas e contagem total
}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