Sobes.tech
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.