Junior — Middle
Ինչպե՞ս եք ստեղծում ձեր սեփական բառարանի իրականացմանը։
sobes.tech AI
Պատասխան AI-ից
Swift-ով iOS-ում սեփական բառարանի (dictionary) իրականացում ստեղծելու համար կարող եք օգտագործել հեշ-թերթի վրա հիմնված տվյալների կառուցվածք։ Հիմնական գաղափարը՝ բանալին-արժեք զույգերը պահել բաքերի զանգվածում, որտեղ յուրաքանչյուր բաք պարունակում է նույն հեշ-կոդով տարրերի ցանկ (կոլիզիաների լուծման համար):
Պարզ օրինակ՝ զանգվածի և շղթաների օգտագործմամբ բառարանի պարզ իրականացում:
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)
// Ստուգում՝ արդյոք արդեն կա այդ բանալինով տարր
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
}
}
// Օգտագործում՝
var dict = MyDictionary<String, Int>()
dict.set(value: 42, forKey: "answer")
print(dict.get(forKey: "answer") ?? "not found") // 42
Այս տեսակի բառարանը աջակցում է հիմնական ներդրման և որոնման գործողություններին։ Ավելի առաջադեմ իրականացման համար կարելի է ավելացնել հեռացում, դինամիկ ընդլայնում, բարելավված կոլիզիաների կառավարում և այլն։