Junior — Middle
Ako je implementovaná jedinečnosť prvkov v kolekcii typu Set?
sobes.tech AI
Odpoveď od AI
V iOS kolekcii Set zabezpečuje jedinečnosť prvkov pomocou hashovania a porovnávania rovnosti.
Každý prvok v Set musí spĺňať protokol Hashable, ktorý vyžaduje implementáciu:
- metódy
hash(into:)— na výpočet hash kódu prvku; - operátora
==— na kontrolu rovnosti dvoch prvkov.
Keď pridáte prvok do Set, systém vypočíta jeho hash a skontroluje, či už neexistuje prvok s rovnakým hashom a rovnosťou. Ak áno, prvok sa nepridá, čím sa zabezpečí jedinečnosť.
Príklad:
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")) // nebude pridané, pretože taký prvok už existuje
Týmto spôsobom sa v Set dosahuje jedinečnosť pomocou hashovania a porovnávania prvkov.