Sobes.tech
Junior — Middle

Hogyan valósul meg az elemek egy Set típusú gyűjteményen belül?

sobes.tech MI

Válasz az MI-től

iOS-en a Set gyűjtemény az elemek egyediségét a hash-elés és az egyenlőség összehasonlítása révén biztosítja.

Minden elem a Set-ben megfelel a Hashable protokollnak, amely megköveteli a következők megvalósítását:

  • a hash(into:) metódust — az elem hash-kódjának kiszámításához;
  • az == operátort — két elem egyenlőségének ellenőrzéséhez.

Amikor egy elemet hozzáadsz a Set-hez, a rendszer kiszámítja annak hash értékét, és ellenőrzi, hogy már létezik-e ugyanazzal a hash-sel és egyenlőséggel rendelkező elem. Ha igen, az elem nem kerül hozzáadásra, így biztosítva az egyediséget.

Példa:

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")) // nem fog hozzáadódni, mert már létezik ilyen elem

Így a Set-ben az egyediség a hash-elés és az elemek összehasonlítása révén valósul meg.