Menu
Coddy logo textTech

Добавление в список: 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 до длины существующего списка задач).

Шпаргалка

Метод 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']

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

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

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()!);
  
  // TODO: Напишите свой код ниже
  // Используйте метод insert(), чтобы добавить срочную задачу в указанную позицию
  
  // Вывести результаты в требуемом формате
  print('Task List: $taskListName');
  print('Original tasks: $tasks');
  print('Inserted: $urgentTask at position $position');
  // Вывести обновленные задачи и общее количество
}
quiz iconПроверьте себя

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

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