Sobes.tech
Junior — Middle

Hogyan növekszik a Map adatstruktúra mérete?

sobes.tech MI

Válasz az MI-től

Go-ban az adatszerkezet map dinamikus méretű hash-táblaként van megvalósítva. Új elemek hozzáadásakor, ha a térkép töltöttsége eléri a bizonyos küszöböt (általában körülbelül 6,5 elem/kosár), akkor méretbővítés történik (rehash): létrejön egy új hash-tábla nagyobb számú kosárral, és minden meglévő elem újra elosztásra kerül az új kosarak között.

Ez a folyamat automatikusan és felhasználó számára átlátható módon történik. A méret növelése segít alacsonyan tartani az ütközések valószínűségét és magas teljesítményt biztosít a keresési és beszúrási műveletek során.

Körülbelül így képzelhető el:

m := make(map[string]int)
m["a"] = 1
// Nagy mennyiségű elem hozzáadásakor a map automatikusan növeli a belső puffert
for i := 0; i < 1000; i++ {
    m[fmt.Sprintf("key%d", i)] = i
}

Belsőleg a Go futásideje figyeli a terhelést, és szükség szerint növeli a térkép méretét.