Middle+
Při přehašování zůstává hash stejný nebo se pro klíč vypočítá nový?
sobes.tech AI
Odpověď od AI
Při rehashování v datových strukturách, jako jsou hash tabulky, se pro každý klíč vypočítá nový hash. To je způsobeno tím, že velikost tabulky se mění, a aby bylo možné správně rozdělit prvky do nových košů, je nutné přepočítat hash s ohledem na novou velikost.
Jinými slovy, starý hash se neuchovává, ale pro každý klíč se znovu volá hashovací funkce a výsledek se používá k určení nové pozice v rozšířené tabulce.
Příklad v Go:
// Při zvětšení velikosti tabulky se volá rehash
func (ht *HashTable) rehash() {
oldBuckets := ht.buckets
ht.buckets = make([][]Entry, newSize)
for _, bucket := range oldBuckets {
for _, entry := range bucket {
newIndex := hash(entry.key) % newSize
ht.buckets[newIndex] = append(ht.buckets[newIndex], entry)
}
}
}
Tímto způsobem je hash pro klíč znovu vypočítán při rehashování.