Sobes.tech
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ó (equals Java-ban, isEqual Swift-ben) és hash-kód számító (hashCode Java-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 Hashable protokollt.

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.