Sobes.tech
Junior — Middle

Ako sa zvyšuje veľkosť dátovej štruktúry Map?

sobes.tech AI

Odpoveď od AI

V Go je dátová štruktúra map implementovaná ako hash tabuľka s dynamickou veľkosťou. Pri pridávaní nových prvkov, ak zaťaženie mapy dosiahne určitý prah (zvyčajne okolo 6,5 prvku na vedro), dôjde k zväčšeniu veľkosti (rehash): vytvorí sa nová hash tabuľka s väčším počtom vedier a všetky existujúce prvky sa znovu rozdelia do nových vedier.

Tento proces prebieha automaticky a je pre používateľa transparentný. Zväčšenie veľkosti pomáha udržiavať nízku pravdepodobnosť kolízií a vysoký výkon operácií vyhľadávania a vkladania.

Približne si to môžete predstaviť takto:

m := make(map[string]int)
m["a"] = 1
// Pri pridávaní veľkého množstva prvkov, map automaticky zväčší svoj vnútorný buffer
for i := 0; i < 1000; i++ {
    m[fmt.Sprintf("key%d", i)] = i
}

Interné, runtime Go sleduje zaťaženie a podľa potreby zväčšuje veľkosť mapy.