Menu
CoddyTech

Tạo tập hợp

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 18 trên 65.

Giờ bạn đã hiểu Set là gì, hãy cùng tìm hiểu cách tạo một Set. Trong Dart, bạn tạo Set bằng cách dùng dấu ngoặc nhọn {}, các phần tử được phân tách bằng dấu phẩy, tương tự như khi viết một tập hợp trong toán học.

Set<String> colors = {'red', 'blue', 'green'};
print(colors);  // {red, blue, green}

Điều quan trọng là không nhầm cú pháp này với cú pháp tạo Map. Dù cả hai đều dùng dấu ngoặc nhọn, Set chỉ chứa các giá trị, còn Map chứa các cặp khóa-giá trị được phân tách bằng dấu hai chấm. Bạn phải khai báo kiểu dữ liệu rõ ràng cho một Set rỗng để phân biệt nó với một Map rỗng.

Set<String> emptySet = <String>{};  // Tập hợp rỗng
Map<String, int> emptyMap = {};     // Map rỗng

Bạn cũng có thể tạo một Set có các giá trị trùng lặp, nhưng hãy nhớ rằng các giá trị trùng lặp sẽ tự động bị loại bỏ, chỉ còn lại các phần tử duy nhất trong tập hợp cuối cùng.

challenge icon

Thử thách

Dễ

Tạo chương trình quản lý hệ thống gắn thẻ blog bằng cách tạo một tập hợp (Set) các thẻ không trùng lặp cho bài đăng blog. Chương trình của bạn cần:

  1. Đọc một chuỗi (string) đầu vào biểu thị tiêu đề bài đăng blog
  2. Đọc nhiều chuỗi đầu vào biểu thị các thẻ cần thêm vào bài đăng (đầu vào sẽ kết thúc khi bạn nhận được "done")
  3. Tạo một tập hợp các chuỗi để lưu các thẻ không trùng lặp
  4. Thêm từng thẻ vào tập hợp (các thẻ trùng lặp sẽ tự động bị loại bỏ)
  5. In kết quả gắn thẻ blog theo đúng định dạng bên dưới

Ví dụ, nếu tiêu đề blog là "Introduction to Dart Programming" và các thẻ là "programming", "dart", "tutorial", "programming", "beginner", chương trình của bạn sẽ in ra:

Blog Post: Introduction to Dart Programming
Tags added: [programming, dart, tutorial, programming, beginner]
Unique tags: {programming, dart, tutorial, beginner}
Total unique tags: 4
Status: Blog post tagged successfully

Nếu tiêu đề blog là "Web Development Tips" và các thẻ là "web", "html", "css", "web", "html", "javascript", chương trình của bạn sẽ in ra:

Blog Post: Web Development Tips
Tags added: [web, html, css, web, html, javascript]
Unique tags: {web, html, css, javascript}
Total unique tags: 4
Status: Blog post tagged successfully

Nếu tiêu đề blog là "Getting Started" và các thẻ là "guide", "basics", chương trình của bạn sẽ in ra:

Blog Post: Getting Started
Tags added: [guide, basics]
Unique tags: {guide, basics}
Total unique tags: 2
Status: Blog post tagged successfully

Chương trình của bạn phải tạo một tập hợp bằng cú pháp dấu ngoặc nhọn {} và minh họa cách tập hợp tự động xử lý việc loại bỏ các giá trị trùng lặp. Trước tiên, hãy lưu tất cả thẻ đầu vào vào một danh sách (list) để thể hiện những gì đã nhập ban đầu, sau đó tạo tập hợp để hiển thị các thẻ không trùng lặp. Tập hợp cần hiển thị nội dung theo định dạng tập hợp tiêu chuẩn với dấu ngoặc nhọn.

Tự làm thử

import 'dart:io';

void main() {
  // Đọc tiêu đề bài đăng blog
  String? title = stdin.readLineSync();
  
  // Đọc các thẻ cho đến khi nhập "done"
  List<String> allTags = [];
  String? tag;
  while ((tag = stdin.readLineSync()) != "done") {
    if (tag != null) {
      allTags.add(tag);
    }
  }
  
  // TODO: Viết code của bạn ở đây
  // Tạo tập hợp Set từ danh sách thẻ để lấy các thẻ duy nhất
  // Tính tổng số thẻ duy nhất
  
  // In kết quả ra
  print("Blog Post: $title");
  print("Tags added: $allTags");
  // In các thẻ duy nhất theo định dạng Set
  // In tổng số thẻ duy nhất
  // In thông báo trạng thái
}
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