Middle+
Pri prehashovaní zostáva hash rovnaký alebo sa pre kľúč vypočíta nový?
sobes.tech AI
Odpoveď od AI
Pri prepočítavaní hashu (rehashing) v dátových štruktúrach, ako sú hash tabuľky, sa pre každý kľúč vypočíta nový hash. To je spôsobené tým, že veľkosť tabuľky sa mení, a aby sa správne rozdelili prvky do nových košov, je potrebné prepočítať hash s ohľadom na novú veľkosť.
Inými slovami, starý hash sa neuchováva, ale pre každý kľúč sa znovu volá funkcia hashovania a výsledok sa používa na určenie novej pozície v rozšírenej tabuľke.
Príklad v Go:
// Pri zväčšení veľkosti tabuľky sa 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)
}
}
}
Takto je hash pre kľúč znovu vypočítaný počas rehashingu.