Middle+
Blijft de hash hetzelfde bij her herhashing of wordt er een nieuwe berekend voor de sleutel?
sobes.tech AI
Antwoord van AI
Bij het opnieuw hashen (rehashing) in datastructuren zoals hash-tabellen, wordt voor elke sleutel een nieuwe hash berekend. Dit komt doordat de grootte van de tabel verandert en om de elementen correct over de nieuwe bakken te verdelen, moet de hash opnieuw worden berekend met inachtneming van de nieuwe grootte.
Met andere woorden, de oude hash wordt niet behouden, maar voor elke sleutel wordt de hashfunctie opnieuw aangeroepen en het resultaat wordt gebruikt om de nieuwe positie in de uitgebreide tabel te bepalen.
Voorbeeld in Go:
// Bij het vergroten van de tabelgrootte wordt rehash aangeroepen
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)
}
}
}
Dus wordt de hash voor de sleutel opnieuw berekend tijdens het rehashen.