Junior — Middle
Kaip didėja duomenų struktūros Map dydis?
sobes.tech AI
Atsakymas iš AI
Go, duomenų struktūra map, įgyvendinta kaip maišos lentelė su dinamiškai keičiama dydžiu. Pridedant naujus elementus, jei žemėlapio apkrova pasiekia tam tikrą ribą (paprastai apie 6,5 elementus vienam kibirui), įvyksta dydžio padidinimas (rehash): sukuriama nauja maišos lentelė su didesniu kibirų skaičiumi, ir visi esami elementai perskirstomi į naujus kibirus.
Šis procesas vyksta automatiškai ir yra skaidrus vartotojui. Dydžio padidinimas padeda išlaikyti žemą susidūrimo tikimybę ir aukštą našumą paieškos ir įterpimo operacijose.
Galite tai įsivaizduoti maždaug taip:
m := make(map[string]int)
m["a"] = 1
// Pridedant daug elementų, žemėlapis automatiškai padidins savo vidinį buferį
for i := 0; i < 1000; i++ {
m[fmt.Sprintf("key%d", i)] = i
}
Viduje, Go vykdymo laikas stebi apkrovą ir, jei reikia, padidina žemėlapio dydį.