Thêm vào danh sách: insert
Thuộc phần Logic và luồng điều khiển trong hành trình Dart của Coddy. Bài học 4 trên 65.
Khi cần thêm một phần tử vào vị trí cụ thể trong danh sách, phương thức insert() giúp bạn kiểm soát chính xác vị trí của phần tử mới. Khác với phương thức add(), vốn luôn thêm phần tử vào cuối danh sách, insert() cho phép bạn đặt phần tử vào bất kỳ vị trí nào bạn chọn.
Phương thức insert() nhận hai tham số: vị trí chỉ số nơi bạn muốn chèn phần tử và chính phần tử đó. Khi bạn chèn một phần tử, tất cả phần tử hiện có ở vị trí đó trở đi sẽ dịch sang phải một vị trí.
List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];
// Chèn một tác vụ mới vào đầu danh sách (chỉ số (index) 0)
tasks.insert(0, 'Check emails');
print(tasks); // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']Phương thức này đặc biệt hữu ích khi thứ tự các phần tử quan trọng, chẳng hạn như danh sách ưu tiên, lịch trình hoặc bất kỳ tình huống nào bạn cần duy trì một trình tự cụ thể. Khả năng chèn vào bất kỳ vị trí nào khiến insert() trở thành công cụ mạnh mẽ để quản lý các tập hợp có thứ tự.
Thử thách
DễTạo một chương trình quản lý hệ thống công việc ưu tiên bằng cách chèn các công việc khẩn cấp vào những vị trí cụ thể trong danh sách công việc hiện có. Chương trình của bạn cần:
- Đọc đầu vào chuỗi (string) thể hiện tên danh sách công việc
- Đọc nhiều đầu vào chuỗi thể hiện các công việc hiện có (đầu vào sẽ kết thúc khi bạn nhận được một chuỗi rỗng)
- Đọc đầu vào chuỗi thể hiện công việc khẩn cấp cần chèn
- Đọc đầu vào số nguyên (integer) thể hiện vị trí cần chèn công việc khẩn cấp
- Dùng phương thức (method)
insert()để thêm công việc khẩn cấp vào vị trí đã chỉ định - In ra danh sách công việc đã cập nhật theo đúng định dạng bên dưới
Ví dụ, nếu tên danh sách công việc là "Work Schedule", các công việc hiện có là "Review documents", "Team meeting", "Submit report", công việc khẩn cấp là "Client call" và vị trí là 1, chương trình của bạn sẽ in ra:
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: 4Nếu tên danh sách công việc là "Daily Goals", các công việc hiện có là "Exercise", "Read book", công việc khẩn cấp là "Buy groceries" và vị trí là 0, chương trình của bạn sẽ in ra:
Task List: Daily Goals
Original tasks: [Exercise, Read book]
Inserted: Buy groceries at position 0
Updated tasks: [Buy groceries, Exercise, Read book]
Total tasks: 3Chương trình của bạn phải dùng phương thức insert() để thêm công việc khẩn cấp vào vị trí đã chỉ định. Đầu vào vị trí luôn là một chỉ số hợp lệ, từ 0 đến độ dài của danh sách công việc hiện có.
Tự làm thử
import 'dart:io';
void main() {
// Đọc tên danh sách công việc
String? taskListName = stdin.readLineSync();
// Đọc các công việc hiện có cho đến khi gặp chuỗi rỗng
List<String> tasks = [];
while (true) {
String? task = stdin.readLineSync();
if (task == null || task.isEmpty) {
break;
}
tasks.add(task);
}
// Đọc công việc khẩn cấp và vị trí
String? urgentTask = stdin.readLineSync();
int position = int.parse(stdin.readLineSync()!);
// TODO: Viết code bên dưới
// Dùng phương thức insert() để thêm công việc khẩn cấp vào vị trí đã chỉ định
// In kết quả theo định dạng yêu cầu
print('Task List: $taskListName');
print('Original tasks: $tasks');
print('Inserted: $urgentTask at position $position');
// In danh sách công việc đã cập nhật và tổng số công việc
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng điều khiển
1Thao tác nâng cao với danh sách
Thuộc tính danh sách: đầu và cuốiTrạng thái danh sách: isEmpty và isNotEmpĐảo ngược danh sáchThêm vào danh sách: insertXóa khỏi danh sách: removeWhereTìm trong danh sách: indexOfSắp xếp danh sáchXáo trộn danh sáchÔn tập: trình sắp xếp danh sách4Thao tác nâng cao với Map
Duyệt qua MapKiểm tra khóa và giá trịCác thuộc tính của Map: khóa và giá trịThêm có điều kiện: putIfAbsentXóa mục khỏi MapMap lồng nhauÔn tập: Cập nhật kho hàng2Thao tác hàm trên danh sách
Biến đổi bằng 'map'Lọc bằng 'where'Dùng '.toList()'Kiểm tra điều kiện bằng 'any'Điều kiện với 'every'Tìm phần tử bằng 'firstWhere'Ôn tập: lọc dữ liệu5Dự án: Tính tiền giỏ hàng
Thiết lập dự ánThêm mặt hàng vào giỏ8Dự án: Trình phân tích văn bản đơn giản
Tổng quan và thiết lập dự ánĐếm ký tự3Tập hợp
Tập hợp là gì?Tạo tập hợpThêm và xóa phần tử khỏi tập hợpKiểm tra phần tử trong tập hợpChuyển danh sách thành tập hợpPhép hợp của các tập hợpPhép giao của các tập hợpPhép hiệu của các tập hợpÔn tập: danh sách khách mời không trùng lặpTự luyện tập: Trình biên dịch Dart online