Middle+
Újrahash-eléskor a hash megmarad vagy újat számítanak ki a kulcs számára?
sobes.tech MI
Válasz az MI-től
Rehashing során adatstruktúrákban, például hash-táblákban, minden kulcs esetében új hash érték kerül kiszámításra. Ez azért van, mert a táblázat mérete változik, és hogy helyesen osszuk el az elemeket az új kosarak között, szükséges újra kiszámítani a hash-t az új méret figyelembevételével.
Vagyis, a régi hash nem marad meg, hanem minden kulcs esetében újra meghívják a hash függvényt, és az eredményt használják az új pozíció meghatározására a bővített táblában.
Go példában:
// Amikor a táblázat méretét növelik, rehash hívódik
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)
}
}
}
Ezért a kulcs hash értéke újra számításra kerül a rehash során.