В каких случаях в Swift следует использовать тип Set?

«В каких случаях в Swift следует использовать тип Set?» — вопрос из категории Алгоритмы и структуры данных, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Тип Set в Swift — это неупорядоченная коллекция уникальных элементов. Его используют, когда важны следующие операции:

  1. Гарантия уникальности – автоматическое удаление дубликатов при вставке.
    let ids: Set = [101, 102, 101, 103] // [101, 102, 103] (порядок может быть любым)
  2. Быстрая проверка принадлежности (contains) – выполняется за O(1) в среднем, что значительно быстрее, чем O(n) у Array.
    let allowedTags: Set = ["VIP", "Premium", "New"]
    if allowedTags.contains(userTag) { // Мгновенная проверка
        grantAccess()
    }
  3. Теоретико-множественные операции – эффективное выполнение операций над коллекциями.

    let developers: Set = ["Alice", "Bob", "Charlie"]
    let designers: Set = ["Bob", "Diana"]
    
    let team = developers.union(designers) // Все: ["Alice", "Bob", "Charlie", "Diana"]
    let bothRoles = developers.intersection(designers) // Только Bob: ["Bob"]
    let onlyDevs = developers.subtracting(designers) // Devs, не являющиеся дизайнерами: ["Alice", "Charlie"]

Когда НЕ использовать Set:

  • Когда важен порядок элементов – используйте Array.
  • Когда нужны дубликаты значений – используйте Array.
  • Когда требуется частая индексация по целочисленному индексу – Array эффективнее.

Примечание: Для собственных типов в Set необходимо, чтобы тип соответствовал протоколу Hashable.