Sobes.tech
Назад к вопросам
Junior — Middle
76

Каким образом реализуется уникальность элементов внутри коллекции типа Set?

Компании, где спрашивали
БКС

Ответ от нейросети

sobes.tech AI

В iOS коллекция Set обеспечивает уникальность элементов за счёт использования хэширования и сравнения на равенство.

Каждый элемент в Set должен соответствовать протоколу Hashable, который требует реализации:

  • метода hash(into:) — для вычисления хэш-кода элемента;
  • оператора == — для проверки равенства двух элементов.

Когда вы добавляете элемент в Set, система вычисляет его хэш и проверяет, есть ли уже элемент с таким же хэшем и равенством. Если да — элемент не добавляется, обеспечивая уникальность.

Пример:

struct Person: Hashable {
    let id: Int
    let name: String
}

var people = Set<Person>()
people.insert(Person(id: 1, name: "Alice"))
people.insert(Person(id: 1, name: "Alice")) // не добавится, т.к. уже есть такой элемент

Таким образом, уникальность в Set достигается за счёт хэширования и сравнения элементов.