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.