Sobes.tech
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.