Sobes.tech
Junior — Middle

Aké typy údajov alebo objekty môžu slúžiť ako kľúče v slovníkoch alebo hash tabuľkách?

sobes.tech AI

Odpoveď od AI

V slovníkoch (dictionary) alebo hash tabuľkách môžu byť kľúče objekty, ktoré spĺňajú nasledujúce požiadavky:

  • Majú správne implementované metódy porovnávania rovnosti (equals v Jave, isEqual vo Swifte) a výpočtu hash kódu (hashCode v Jave).
  • Sú nemenné (immutable) alebo aspoň sa po použití ako kľúč nezmenia, aby sa predišlo problémom s vyhľadávaním.

V iOS (Swfit) sú v slovníkoch (Dictionary) zvyčajne používané typy, ktoré zodpovedajú protokolu Hashable. Tieto môžu byť:

  • Štandardné typy: String, Int, Double, Bool.
  • Používateľsky definované štruktúry alebo triedy, ktoré implementujú protokol Hashable.

Príklad:

struct Person: Hashable {
    let id: Int
    let name: String
}

var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"

Preto musia byť kľúče hashovateľné a nemenné, aby správne fungoval slovník.