Добавление в список: 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() мощным инструментом для управления упорядоченными коллекциями.
Задание
ЛегкоСоздайте программу, которая управляет системой приоритетных задач, вставляя срочные задачи в определенные позиции в существующем списке задач. Ваша программа должна:
- Прочитать строковый ввод, представляющий название списка задач
- Прочитать несколько строковых вводов, представляющих существующие задачи (ввод закончится, когда вы получите пустую строку)
- Прочитать строковый ввод, представляющий срочную задачу для вставки
- Прочитать целочисленный ввод, представляющий позицию, в которую должна быть вставлена срочная задача
- Использовать метод
insert()для добавления срочной задачи в указанную позицию - Вывести обновленный список задач в точном формате, показанном ниже
Например, если название списка задач — "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');
// Вывести обновленные задачи и общее количество
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей