Middle+
Kas juuresoleval juhul jääb hash samaks või arvutatakse uus võtme jaoks?
sobes.tech AI
Vastus AI-lt
Andmestruktuurides, nagu hash-tabelid, arvutatakse iga võtme jaoks uus hash. See on seotud sellega, et tabeli suurus muutub ning et õigesti jaotada elemendid uutes korvides, on vaja uuesti arvutada hash, arvestades uut suurust.
Teisisõnu, vana hash ei säilitata, vaid iga võtme jaoks kutsutakse uuesti hash-funktsioon ning tulemus kasutatakse uue positsiooni määramiseks laiendatud tabelis.
Näide Go keeles:
// Kui tabeli suurus suureneb, kutsutakse 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)
}
}
}
Seega arvutatakse võtme hash uuesti rehashi ajal.