Sobes.tech
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.