Sobes.tech
Back to questions
Junior — Middle
78

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

Companies where asked
DNSDNS

Answer from AI

sobes.tech AI

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

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

  • Хеш-функции (hash(into:)), возвращающей хеш-код элемента.
  • Оператора равенства (Equatable), чтобы определить, когда два элемента считаются одинаковыми.

При добавлении элемента в 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")) // не добавится, так как уже есть такой элемент

Таким образом, уникальность обеспечивается через корректную реализацию Hashable и Equatable.