创建集合
本课属于 Coddy Dart 学习旅程的“逻辑与流程控制”单元。第 18 课,共 65 课。
现在你已经了解了 Set 是什么,接下来我们来学习如何创建一个。在 Dart 中,你可以使用花括号 {} 创建 Set,并用逗号分隔其中的元素,和数学集合的写法类似。
Set<String> colors = {'red', 'blue', 'green'};
print(colors); // {red, blue, green}不要把这种语法和创建 Map 混淆。虽然两者都使用花括号,但 Set 只包含值,而 Map 包含用冒号分隔的键值对。空的 Set 必须显式声明类型,以便与空的 Map 区分开。
Set<String> emptySet = <String>{}; // 空集合
Map<String, int> emptyMap = {}; // 空映射你也可以创建一个包含重复值的 Set,但要记住,重复值会被自动移除,最终集合中只保留唯一元素。
挑战
简单编写一个程序,通过为博客文章创建一个包含唯一标签的集合,来管理博客标签系统。你的程序应该:
- 读取一个表示博客文章标题的字符串输入
- 读取多个表示要添加到文章中的标签的字符串输入(收到
"done"时结束输入) - 创建一个字符串集合,用来存储唯一标签
- 将每个标签添加到集合中(重复项会自动移除)
- 按照下方显示的确切格式输出博客标签结果
例如,如果博客标题是 "Introduction to Dart Programming",标签依次为 "programming"、"dart"、"tutorial"、"programming"、"beginner",你的程序应该输出:
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如果博客标题是 "Web Development Tips",标签依次为 "web"、"html"、"css"、"web"、"html"、"javascript",你的程序应该输出:
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如果博客标题是 "Getting Started",标签依次为 "guide"、"basics",你的程序应该输出:
Blog Post: Getting Started
Tags added: [guide, basics]
Unique tags: {guide, basics}
Total unique tags: 2
Status: Blog post tagged successfully你的程序必须使用花括号 {} 语法创建集合,并演示集合如何自动移除重复项。先将所有输入的标签存储在列表中,以展示最初输入的内容,然后再创建集合,以显示唯一标签。集合应使用标准集合格式显示其内容,并以花括号括起来。
亲手试试
import 'dart:io';
void main() {
// 读取博客文章标题
String? title = stdin.readLineSync();
// 读取标签,直到输入 "done"
List<String> allTags = [];
String? tag;
while ((tag = stdin.readLineSync()) != "done") {
if (tag != null) {
allTags.add(tag);
}
}
// TODO: 在这里编写你的代码
// 根据标签列表创建集合,获取不重复的标签
// 计算不重复标签的总数
// 输出结果
print("Blog Post: $title");
print("Tags added: $allTags");
// 以集合格式打印不重复的标签
// 打印不重复标签的总数
// 打印状态消息
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程控制中的所有课
自己练习: Dart 在线编译器