Menu
CoddyTech

向集合中添加和删除元素

本课属于 Coddy Dart 学习旅程的“逻辑与流程控制”单元。第 19 课,共 65 课。

有了 Set 后,你通常需要通过添加新元素或移除现有元素来修改其中的内容。add() 和 remove() 方法可以轻松管理集合中的元素。

add() 方法会尝试向集合中插入一个新元素。但是,由于集合只存储唯一值,如果你尝试添加一个已经存在的元素,该方法就不会执行任何操作,不会发生错误,集合也会保持不变。

Set<String> usernames = {'alice', 'bob', 'charlie'};

usernames.add('diana');     // 成功添加 'diana'
usernames.add('alice');     // 不会执行任何操作,因为 'alice' 已存在

print(usernames);  // {alice, bob, charlie, diana}

remove() 方法会接收你想删除的值,并将其从集合中移除。如果集合中不存在该元素,这个方法就什么也不做,因此你可以放心使用,无需事先检查。

usernames.remove('bob');        // 移除 'bob'
usernames.remove('unknown');    // 未找到元素,因此不执行任何操作

print(usernames);  // {alice, charlie, diana}
challenge icon

挑战

简单

创建一个程序,通过向项目团队添加新成员并移除不活跃的成员来管理团队协作系统。你的程序应当:

  1. 读取一个表示项目名称的字符串输入
  2. 读取多个表示初始团队成员的字符串输入(收到 "initial_done" 时结束输入)
  3. 读取多个表示要添加的新成员的字符串输入(收到 "add_done" 时结束输入)
  4. 读取多个表示要移除的成员的字符串输入(收到 "remove_done" 时结束输入)
  5. 使用初始团队成员创建一个 Set
  6. 使用 add() 方法将每位新成员添加到团队中
  7. 使用 remove() 方法从团队中移除指定成员
  8. 按照下方所示的确切格式输出团队管理结果

例如,如果项目名称是 "Mobile App Development",初始成员是 "Alice"、"Bob"、"Charlie",要添加的新成员是 "Diana"、"Alice"、"Eve",要移除的成员是 "Bob"、"Frank",你的程序应输出:

Project: Mobile App Development
Initial team: {Alice, Bob, Charlie}
Adding new members: [Diana, Alice, Eve]
After adding members: {Alice, Bob, Charlie, Diana, Eve}
Removing members: [Bob, Frank]
Final team: {Alice, Charlie, Diana, Eve}
Team size: 4
Status: Team updated successfully

如果项目名称是 "Website Redesign",初始成员是 "John"、"Sarah",要添加的新成员是 "Mike"、"John",要移除的成员是 "Sarah"、"Unknown",你的程序应输出:

Project: Website Redesign
Initial team: {John, Sarah}
Adding new members: [Mike, John]
After adding members: {John, Sarah, Mike}
Removing members: [Sarah, Unknown]
Final team: {John, Mike}
Team size: 2
Status: Team updated successfully

如果项目名称是 "Data Analysis",初始成员是 "Emma",要添加的新成员是 "Tom"、"Lisa",要移除的成员是 "Emma",你的程序应输出:

Project: Data Analysis
Initial team: {Emma}
Adding new members: [Tom, Lisa]
After adding members: {Emma, Tom, Lisa}
Removing members: [Emma]
Final team: {Tom, Lisa}
Team size: 2
Status: Team updated successfully

你的程序必须展示:尝试添加已存在的成员时,add() 方法不会执行任何操作;尝试移除不存在的成员时,remove() 方法也不会执行任何操作。保存输入的列表,以展示尝试执行了哪些操作,然后显示每次操作后的 Set 内容,以说明 Set 的元素具有唯一性。

亲手试试

import 'dart:io';

void main() {
  // 读取项目名称
  String? projectName = stdin.readLineSync();
  
  // 读取初始团队成员
  List<String> initialMembers = [];
  String? member;
  while ((member = stdin.readLineSync()) != "initial_done") {
    initialMembers.add(member!);
  }
  
  // 读取要添加的新成员
  List<String> membersToAdd = [];
  while ((member = stdin.readLineSync()) != "add_done") {
    membersToAdd.add(member!);
  }
  
  // 读取要移除的成员
  List<String> membersToRemove = [];
  while ((member = stdin.readLineSync()) != "remove_done") {
    membersToRemove.add(member!);
  }
  
  // TODO:在下方编写你的代码
  // 用初始团队成员创建一个集合
  // 使用 add() 方法添加新成员
  // 使用 remove() 方法移除成员
  
  // 按要求的格式打印结果
  print("Project: $projectName");
  // 在这里添加剩余的 print 语句
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程控制中的所有课

自己练习: Dart 在线编译器