Junior — Middle
Welke datatypes of objecten kunnen dienen als sleutels in woordenboeken of hashtabellen?
sobes.tech AI
Antwoord van AI
In woordenboeken (dictionary) of hash-tabellen kunnen de sleutels objecten zijn die aan de volgende eisen voldoen:
- Correct geïmplementeerde gelijkheidsvergelijkingsmethoden (
equalsin Java,isEqualin Swift) en hashcode-berekeningen (hashCodein Java). - Ze zijn onveranderlijk (immutable) of veranderen op zijn minst niet nadat ze als sleutel zijn gebruikt, om zoekproblemen te voorkomen.
In iOS (Swift) worden in woordenboeken (Dictionary) meestal typen gebruikt die voldoen aan het protocol Hashable. Dit kunnen zijn:
- Standaardtypen:
String,Int,Double,Bool. - Aangepaste structuren of klassen die het
Hashable-protocol implementeren.
Voorbeeld:
struct Person: Hashable {
let id: Int
let name: String
}
var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"
Dus moeten de sleutels hashbaar en onveranderlijk zijn voor de correcte werking van de woordenboek.