Menu
Coddy logo textTech

Создание множества

Часть раздела Логика и управление потоком путешествия по 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 с дублирующимися значениями, но помните, что дубликаты будут автоматически удалены, и в итоговой коллекции останутся только уникальные элементы.

challenge icon

Задание

Легко

Создайте программу, которая управляет системой тегов блога, создавая Set (множество) уникальных тегов для поста в блоге. Ваша программа должна:

  1. Прочитать строковый ввод, представляющий заголовок поста в блоге
  2. Прочитать несколько строковых вводов, представляющих теги, которые нужно добавить к посту (ввод закончится, когда вы получите "done")
  3. Создать Set строк для хранения уникальных тегов
  4. Добавить каждый тег в Set (дубликаты будут удалены автоматически)
  5. Вывести результаты тегирования блога в точном формате, показанном ниже

Например, если заголовок блога — "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
  // Вывести общее количество уникальных тегов
  // Вывести сообщение о статусе
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком