Menu
CoddyTech

向列表添加元素:insert

本课属于 Coddy Dart 学习旅程的“逻辑与流程控制”单元。第 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()!);
  
  // TODO: 在下方编写你的代码
  // 使用 insert() 方法在指定位置添加紧急任务
  
  // 按要求的格式输出结果
  print('Task List: $taskListName');
  print('Original tasks: $tasks');
  print('Inserted: $urgentTask at position $position');
  // 输出更新后的任务和任务总数
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程控制中的所有课

自己练习: Dart 在线编译器