Junior — Middle
Milyen adattípusok vagy objektumok lehetnek kulcsok szótárakban vagy hash-táblákban?
sobes.tech MI
Válasz az MI-től
Szótárakban (dictionary) vagy hash-táblákban a kulcsok lehetnek olyan objektumok, amelyek megfelelnek a következő követelményeknek:
- Helyesen implementált egyenlőség-összehasonlító (
equalsJava-ban,isEqualSwift-ben) és hash-kód számító (hashCodeJava-ban) metódusokkal rendelkeznek. - Változtathatatlanok (immutable) vagy legalább nem változnak meg a kulcsként való használat után, hogy elkerüljük a keresési problémákat.
iOS (Swift) esetén a szótárakban (Dictionary) általában olyan típusokat használnak, amelyek megfelelnek a Hashable protokollnak. Ezek lehetnek:
- Alapértelmezett típusok:
String,Int,Double,Bool. - Egyedi struktúrák vagy osztályok, amelyek implementálják a
Hashableprotokollt.
Példa:
struct Person: Hashable {
let id: Int
let name: String
}
var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"
Ezért a kulcsoknak hashelhetőnek és változtathatatlannak kell lenniük a szótár helyes működéséhez.