Назад к вопросам
DNS
Junior — Middle
77
Какими механизмами обеспечивается уникальность элементов в коллекции типа множество?
Компании, где спрашивали
Ответ от нейросети
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.