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ỗngBạ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.
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:
- Đọc một chuỗi (string) đầu vào biểu thị tiêu đề bài đăng blog
- Đọ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") - Tạo một tập hợp các chuỗi để lưu các thẻ không trùng lặp
- 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ỏ)
- 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 successfullyNế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 successfullyNế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 successfullyChươ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
}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