Menu
CoddyTech

Добавление в список: insert

Часть раздела Логика и управление потоком путешествия по Dart на Coddy. Урок 4 из 65.

Когда нужно добавить элемент в определённую позицию списка, метод insert() позволяет точно указать, куда поместить новый элемент. В отличие от метода add(), который всегда добавляет элементы в конец списка, insert() позволяет поместить элемент в любую выбранную вами позицию.

Метод insert() принимает два параметра: позицию индекса, в которую вы хотите вставить элемент, и сам элемент. Когда вы вставляете элемент, все существующие элементы на этой позиции и далее сдвигаются на одну позицию вправо.

List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];

// Добавить новую задачу в начало (индекс 0)
tasks.insert(0, 'Check emails');

print(tasks);  // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']

Этот метод особенно полезен, когда важен порядок элементов, например в списках приоритетов, расписаниях или в любой ситуации, когда нужно сохранить определённую последовательность. Возможность вставлять элементы в любую позицию делает insert() мощным инструментом для управления упорядоченными коллекциями.

challenge icon

Задание

Легко

Создайте программу, которая управляет системой приоритетных задач, вставляя срочные задачи в указанные позиции существующего списка задач. Ваша программа должна:

  1. Считать строковый ввод, представляющий название списка задач
  2. Считать несколько строковых вводов, представляющих существующие задачи (ввод завершится, когда вы получите пустую строку)
  3. Считать строковый ввод, представляющий срочную задачу для вставки
  4. Считать целочисленный ввод, представляющий позицию, в которую следует вставить срочную задачу
  5. Использовать метод insert(), чтобы добавить срочную задачу в указанную позицию
  6. Вывести обновлённый список задач точно в формате, показанном ниже

Например, если название списка задач — "Work Schedule", существующие задачи — "Review documents", "Team meeting", "Submit report", срочная задача — "Client call", а позиция — 1, ваша программа должна вывести:

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: 4

Если название списка задач — "Daily Goals", существующие задачи — "Exercise", "Read book", срочная задача — "Buy groceries", а позиция — 0, ваша программа должна вывести:

Task List: Daily Goals
Original tasks: [Exercise, Read book]
Inserted: Buy groceries at position 0
Updated tasks: [Buy groceries, Exercise, Read book]
Total tasks: 3

Ваша программа должна использовать метод insert(), чтобы добавить срочную задачу в указанную позицию. Ввод позиции всегда будет допустимым индексом (от 0 до длины существующего списка задач).

Попробуйте сами

import 'dart:io';

void main() {
  // Считать название списка задач
  String? taskListName = stdin.readLineSync();
  
  // Считывать существующие задачи до пустой строки
  List<String> tasks = [];
  while (true) {
    String? task = stdin.readLineSync();
    if (task == null || task.isEmpty) {
      break;
    }
    tasks.add(task);
  }
  
  // Считать срочную задачу и позицию
  String? urgentTask = stdin.readLineSync();
  int position = int.parse(stdin.readLineSync()!);
  
  // Сохранить исходный список задач перед вставкой
  String originalTasks = tasks.toString();
  
  // TODO: Напишите свой код ниже
  // Используйте метод insert(), чтобы добавить срочную задачу в указанную позицию
  
  // Вывести результаты в требуемом формате
  print('Task List: $taskListName');
  print('Original tasks: $originalTasks');
  print('Inserted: $urgentTask at position $position');
  // Вывести обновлённый список задач и их общее количество
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Dart