Создание множеств
Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 18 из 56.
Set — это неупорядоченная коллекция уникальных значений. Одинаковый тип элементов для каждого члена, дубликаты не допускаются, нет предсказуемого порядка итерации.
var colors: Set<String> = ["red", "green", "blue", "red"]
print(colors.count) // 3 (дубликат "red" отбрасывается)Аннотация типа Set<String> обязательна в литеральной форме, так как ["a", "b"] само по себе будет интерпретировано как Array.
Три основные операции: contains, insert и remove. Последние две возвращают информацию о том, было ли изменение значимым.
colors.insert("yellow") // добавляет его
colors.insert("red") // уже есть, никакого эффекта
colors.contains("green") // true
colors.remove("blue") // возвращает "blue" или nil, если отсутствуетСоздание множества из массива удаляет дубликаты за один шаг:
let unique = Set([1, 2, 2, 3, 3, 3])
// 3 элемента, точный порядок не гарантируетсяЗадание
НовичокПрочитайте одну строку ввода: список слов, разделенных запятыми (возможно, с дубликатами).
Выведите три строки:
- Количество уникальных слов (используйте
Set) - Уникальные слова, отсортированные по алфавиту и разделенные
, true, если ввод содержит словоswift, иначеfalse(используйтеcontains)
Для ввода swift,ruby,go,swift,go,rust результатом будет:
4
go,ruby,rust,swift
trueШпаргалка
Set (Множество) – неупорядоченная коллекция уникальных значений. Аннотация типа обязательна при использовании синтаксиса литерала массива:
var colors: Set<String> = ["red", "green", "blue", "red"]
print(colors.count) // 3 (дубликат удален)Основные операции:
colors.insert("yellow") // добавляет элемент
colors.contains("green") // true
colors.remove("blue") // возвращает "blue" или nil, если отсутствуетСоздание множества из массива для удаления дубликатов:
let unique = Set([1, 2, 2, 3, 3, 3]) // 3 элементаПопробуйте сами
let words = readLine()!.components(separatedBy: ",")
// TODO: удалить дубликаты через Set, вывести count, отсортировать и объединить (sorted joined), проверить, содержит ли "swift"
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Строки в деталях
Подсчет и индексыРегистр и удаление пробеловПоиск в строкахРазделение и объединениеЗамена подстрокИтоги — Проверка имени пользователя4Множества
Создание множествОбъединение и пересечениеРазность и симметрическая разностьПодмножество и надмножествоИтоги — Фильтр тегов7Проект — Трекер привычек
Обзор проектаОтметить выполнение10Проект — Движок викторины
Обзор проектаЗадаем вопросы2Диапазоны и шаги
Закрытые и полуоткрытыеШагМетоды диапазоновДиапазоны в SwitchИтоги: Сетка календаря