Junior — Middle
¿Cómo creas tu propia implementación del diccionario?
sobes.tech AI
Respuesta de la IA
Para crear una implementación propia de un diccionario en iOS con Swift, se puede utilizar una estructura de datos basada en una tabla hash. La idea principal es almacenar pares clave-valor en un array de buckets, donde cada bucket contiene una lista de elementos con el mismo código hash (para resolver colisiones).
Ejemplo de una implementación sencilla de un diccionario usando un array y cadenas:
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)
// Verifica si ya existe un elemento con esa clave
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
}
}
// Uso:
var dict = MyDictionary<String, Int>()
dict.set(value: 42, forKey: "answer")
print(dict.get(forKey: "answer") ?? "not found") // 42
Este tipo de diccionario soporta operaciones básicas de inserción y búsqueda. Para una implementación más avanzada, se pueden agregar eliminación, expansión dinámica, mejor manejo de colisiones, etc.