Junior — Middle
Hoe maak je je eigen implementatie van het woordenboek?
sobes.tech AI
Antwoord van AI
Om een eigen implementatie van een woordenboek (dictionary) in iOS met Swift te maken, kun je een datastructuur gebruiken op basis van een hashtabel. Het belangrijkste idee is om sleutel-waardeparen op te slaan in een array van buckets, waarbij elke bucket een lijst bevat van elementen met dezelfde hash-code (om collisions op te lossen).
Voorbeeld van een eenvoudige implementatie van een woordenboek met behulp van een array en ketens:
struct MyDictionary<Key: Hashable, Value> {
private typealias Element = (key: Key, value: Value)
private var buckets: [[Element]]
private let capacity: Int
init(capacity: Int = 16) {
self.capacity = capacity
self.buckets = Array(repeating: [], count: capacity)
}
private func index(forKey key: Key) -> Int {
return abs(key.hashValue) % capacity
}
mutating func set(value: Value, forKey key: Key) {
let index = self.index(forKey: key)
// Controleer of er al een element met deze sleutel bestaat
if let i = buckets[index].firstIndex(where: { $0.key == key }) {
buckets[index][i].value = value
} else {
buckets[index].append((key, value))
}
}
func get(forKey key: Key) -> Value? {
let index = self.index(forKey: key)
return buckets[index].first(where: { $0.key == key })?.value
}
}
// Gebruik:
var dict = MyDictionary<String, Int>()
dict.set(value: 42, forKey: "answer")
print(dict.get(forKey: "answer") ?? "not found") // 42
Deze soort woordenboek ondersteunt basisbewerkingen zoals invoegen en zoeken. Voor een meer geavanceerde implementatie kunnen functies voor verwijderen, dynamische uitbreiding, verbeterd collisionbeheer, enzovoort worden toegevoegd.