Назад к вопросам
Дзен
Junior — Middle
75
Можете объяснить, как реализуется доступ к объекту в Hash-таблице внутри системы?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Доступ к объекту в Hash-таблице реализуется через вычисление хеш-функции от ключа, которая определяет индекс в массиве, где хранится значение.
Пример работы:
- Вы берёте ключ и применяете к нему хеш-функцию, получая число (хеш).
- Это число преобразуется в индекс массива (обычно по модулю размера массива).
- По этому индексу в массиве хранится связанный список или другой контейнер с элементами, у которых совпадает хеш.
- Происходит перебор элементов в этом контейнере для поиска точного совпадения ключа.
Пример на Swift:
struct HashTable<Key: Hashable, Value> {
private var buckets: [[(key: Key, value: Value)]]
init(size: Int) {
buckets = Array(repeating: [], count: size)
}
func hash(_ key: Key) -> Int {
return abs(key.hashValue) % buckets.count
}
mutating func set(_ key: Key, value: Value) {
let index = hash(key)
for i in 0..<buckets[index].count {
if buckets[index][i].key == key {
buckets[index][i].value = value
return
}
}
buckets[index].append((key, value))
}
func get(_ key: Key) -> Value? {
let index = hash(key)
for pair in buckets[index] {
if pair.key == key {
return pair.value
}
}
return nil
}
}
Таким образом, доступ к объекту — это вычисление хеша, переход к нужному бакету и поиск по ключу внутри него.