Menu
CoddyTech

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ự.

challenge icon

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:

  1. Đọc đầu vào chuỗi (string) thể hiện tên danh sách công việc
  2. Đọ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)
  3. Đọc đầu vào chuỗi thể hiện công việc khẩn cấp cần chèn
  4. Đọ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
  5. Dùng phương thức (method) insert() để thêm công việc khẩn cấp vào vị trí đã chỉ định
  6. 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: 4

Nế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: 3

Chươ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
}
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch Dart online