Добавление и удаление элементов
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 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}Задание
ЛегкоСоздайте программу, которая управляет системой совместной работы команды, добавляя новых участников и удаляя неактивных из проектной группы. Ваша программа должна:
- Прочитать строковый ввод, представляющий название проекта
- Прочитать несколько строковых вводов, представляющих начальных участников команды (ввод закончится, когда вы получите
"initial_done") - Прочитать несколько строковых вводов, представляющих новых участников для добавления (ввод закончится, когда вы получите
"add_done") - Прочитать несколько строковых вводов, представляющих участников для удаления (ввод закончится, когда вы получите
"remove_done") - Создать Set с начальными участниками команды
- Использовать метод
add()для добавления каждого нового участника в команду - Использовать метод
remove()для удаления каждого указанного участника из команды - Вывести результаты управления командой в точном формате, показанном ниже
Например, если название проекта — "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 после каждой операции, чтобы продемонстрировать уникальную природу множеств (Sets).
Шпаргалка
Используйте add() для вставки элементов в Set. Если элемент уже существует, ничего не произойдет:
Set<String> usernames = {'alice', 'bob', 'charlie'};
usernames.add('diana'); // Успешно добавляет 'diana'
usernames.add('alice'); // Ничего не делает - 'alice' уже существует
print(usernames); // {alice, bob, charlie, diana}Используйте remove() для удаления элементов из Set. Если элемент не существует, ничего не произойдет:
usernames.remove('bob'); // Удаляет 'bob'
usernames.remove('unknown'); // Ничего не делает - элемент не найден
print(usernames); // {alice, charlie, diana}Попробуйте сами
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: Напишите свой код ниже
// Создайте Set с начальным составом команды
// Добавьте новых участников, используя метод add()
// Удалите участников, используя метод remove()
// Вывод результатов в требуемом формате
print("Project: $projectName");
// Добавьте остальные операторы вывода здесь
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей