Middle+
How is a hash table structured? What are the basic principles embedded in it, and the main requirements?
sobes.tech AI
Answer from AI
A hash table is a data structure that provides fast access to elements by key. The main principle is using a hash function to convert the key into an array index where the value is stored.
Basic principles:
- Hash function: converts the key into an integer index.
- Collision resolution: since different keys can have the same index, methods such as chaining (linked lists) or open addressing are used.
- Dynamic resizing: when a certain load factor is reached, the table is expanded to maintain efficiency.
Main requirements:
- A fast and uniform hash function that minimizes collisions.
- Efficient collision resolution.
- Support for insert, search, and delete operations with an amortized complexity close to O(1).
Example in Go (simplified):
Type HashTable struct {
buckets [][]KeyValue
}
type KeyValue struct {
key string
value interface{}
}
func (ht *HashTable) hash(key string) int {
var hash int
for _, c := range key {
hash = 31*hash + int(c)
}
return hash % len(ht.buckets)
}
func (ht *HashTable) Put(key string, value interface{}) {
index := ht.hash(key)
// add or update in chain
}
func (ht *HashTable) Get(key string) (interface{}, bool) {
index := ht.hash(key)
// search in chain
return nil, false
}
This is a basic example; real implementations consider resizing, deletion, and optimizations.