Añadir a una lista: insert
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy. Lección 4 de 65.
Cuando necesitas añadir un elemento en una posición específica de una lista, el método insert() te permite controlar con precisión dónde se coloca el nuevo elemento. A diferencia del método add(), que siempre añade elementos al final de una lista, insert() te permite colocar un elemento en cualquier posición que elijas.
El método insert() toma dos parámetros: la posición del índice donde quieres insertar el elemento y el elemento en sí. Cuando insertas un elemento, todos los elementos existentes en esa posición y más allá se desplazan una posición hacia la derecha.
List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];
// Inserta una nueva tarea al principio (índice 0)
tasks.insert(0, 'Check emails');
print(tasks); // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']Este método es especialmente útil cuando importa el orden de los elementos, como en listas de prioridades, horarios o cualquier situación en la que necesites mantener una secuencia específica. La posibilidad de insertar en cualquier posición convierte a insert() en una herramienta potente para gestionar colecciones ordenadas.
Desafío
FácilCrea un programa que gestione un sistema de tareas prioritarias insertando tareas urgentes en posiciones específicas de una lista de tareas existente. Tu programa debe:
- Leer una entrada de cadena que represente el nombre de la lista de tareas
- Leer varias entradas de cadena que representen las tareas existentes (la entrada terminará cuando recibas una cadena vacía)
- Leer una entrada de cadena que represente una tarea urgente que se va a insertar
- Leer una entrada de número entero que represente la posición en la que se debe insertar la tarea urgente
- Usar el método
insert()para agregar la tarea urgente en la posición especificada - Imprimir la lista de tareas actualizada en el formato exacto que se muestra a continuación
Por ejemplo, si el nombre de la lista de tareas es "Work Schedule", las tareas existentes son "Review documents", "Team meeting", "Submit report", la tarea urgente es "Client call" y la posición es 1, tu programa debería mostrar:
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: 4Si el nombre de la lista de tareas es "Daily Goals", las tareas existentes son "Exercise", "Read book", la tarea urgente es "Buy groceries" y la posición es 0, tu programa debería mostrar:
Task List: Daily Goals
Original tasks: [Exercise, Read book]
Inserted: Buy groceries at position 0
Updated tasks: [Buy groceries, Exercise, Read book]
Total tasks: 3Tu programa debe usar el método insert() para agregar la tarea urgente en la posición especificada. La posición ingresada siempre será un índice válido (entre 0 y la longitud de la lista de tareas existente).
Pruébalo tú mismo
import 'dart:io';
void main() {
// Lee el nombre de la lista de tareas
String? taskListName = stdin.readLineSync();
// Lee las tareas existentes hasta encontrar una cadena vacía
List<String> tasks = [];
while (true) {
String? task = stdin.readLineSync();
if (task == null || task.isEmpty) {
break;
}
tasks.add(task);
}
// Lee la tarea urgente y la posición
String? urgentTask = stdin.readLineSync();
int position = int.parse(stdin.readLineSync()!);
// Guarda las tareas originales antes de la inserción
String originalTasks = tasks.toString();
// TODO: Escribe tu código a continuación
// Usa el método insert() para añadir la tarea urgente en la posición especificada
// Imprime los resultados en el formato requerido
print('Task List: $taskListName');
print('Original tasks: $originalTasks');
print('Inserted: $urgentTask at position $position');
// Imprime las tareas actualizadas y el número total
}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 únicaPractica por tu cuenta: Compilador de Dart online