向列表添加元素: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() 是管理有序集合的强大工具。
挑战
简单创建一个程序,通过在现有任务列表的指定位置插入紧急任务,来管理优先级任务系统。你的程序应当:
- 读取一个表示任务列表名称的字符串输入
- 读取多个表示现有任务的字符串输入(收到空字符串时,输入结束)
- 读取一个表示要插入的紧急任务的字符串输入
- 读取一个表示紧急任务应插入位置的整数输入
- 使用
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 和现有任务列表的长度之间)。
亲手试试
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');
// 输出更新后的任务和任务总数
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程控制中的所有课
自己练习: Dart 在线编译器