Ответ
Set — это протокол в Swift, который описывает коллекцию уникальных элементов без гарантированного порядка. Он наследуется от Collection.
Ключевые требования:
- Уникальность: Каждый элемент может присутствовать в множестве только один раз.
- Hashable: Элементы должны соответствовать протоколу
Hashableдля эффективного хранения и поиска. - Неупорядоченность: Порядок обхода элементов не определён и может меняться.
Основные операции (O(1) в среднем случае):
contains(_:)— проверка наличия элемента.insert(_:)— добавление элемента (если его ещё нет).remove(_:)— удаление элемента.- Теоретико-множественные операции:
union,intersection,subtracting,symmetricDifference.
Пример использования:
// Объявление и инициализация
var visitedPages: Set<String> = ["home", "about", "contact"]
// Добавление (дубликат игнорируется)
visitedPages.insert("home") // Множество не изменится
visitedPages.insert("blog") // Добавится "blog"
// Быстрая проверка
if visitedPages.contains("about") {
print("Страница уже посещена")
}
// Удаление дубликатов из массива
let arrayWithDuplicates = [1, 2, 2, 3, 1]
let uniqueElements = Set(arrayWithDuplicates) // Set([2, 1, 3])
let deduplicatedArray = Array(uniqueElements) // [2, 1, 3] (порядок может быть другим)
Почему Hashable? Конформность к Hashable позволяет Set использовать хеш-таблицу для хранения элементов, что обеспечивает константное время (в среднем) для операций вставки, удаления и поиска.