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 (
equalsv Jave,isEqualvo Swifte) a výpočtu hash kódu (hashCodev 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.