Создание множества
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 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 = {}; // Пустой MapВы также можете создать Set с дублирующимися значениями, но помните, что дубликаты будут автоматически удалены, и в итоговой коллекции останутся только уникальные элементы.
Задание
ЛегкоСоздайте программу, которая управляет системой тегов блога, создавая Set (множество) уникальных тегов для поста в блоге. Ваша программа должна:
- Прочитать строковый ввод, представляющий заголовок поста в блоге
- Прочитать несколько строковых вводов, представляющих теги, которые нужно добавить к посту (ввод закончится, когда вы получите
"done") - Создать Set строк для хранения уникальных тегов
- Добавить каждый тег в Set (дубликаты будут удалены автоматически)
- Вывести результаты тегирования блога в точном формате, показанном ниже
Например, если заголовок блога — "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Ваша программа должна создать Set, используя синтаксис фигурных скобок {}, и продемонстрировать, как Sets автоматически обрабатывают удаление дубликатов. Сначала сохраните все введенные теги в список, чтобы показать, что было введено изначально, а затем создайте Set, чтобы показать уникальные теги. Set должен отображать свое содержимое в стандартном формате Set с фигурными скобками.
Шпаргалка
Создайте Set, используя фигурные скобки {} с элементами, разделенными запятыми:
Set<String> colors = {'red', 'blue', 'green'};
print(colors); // {red, blue, green}Для пустых множеств (Sets) явно указывайте тип, чтобы отличить их от пустых словарей (Maps):
Set<String> emptySet = <String>{}; // Пустое множество (Set)
Map<String, int> emptyMap = {}; // Пустой словарь (Map)Множества (Sets) автоматически удаляют дубликаты, сохраняя только уникальные элементы.
Попробуйте сами
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: Напишите свой код здесь
// Создать Set из списка тегов, чтобы получить уникальные теги
// Вычислить общее количество уникальных тегов
// Вывести результаты
print("Blog Post: $title");
print("Tags added: $allTags");
// Вывести уникальные теги в формате Set
// Вывести общее количество уникальных тегов
// Вывести сообщение о статусе
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
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Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей