GO 中的 Map 最多可以存储多少个元素?如果我需要经常从 Map 访问数据,那么在长时间运行的程序中不断向 Map 添加项目并从中检索项目是一个好主意吗?
除了map-length类型的最大值之外,map中的元素数量没有理论上的限制。int
。的最大值int
取决于您编译到的目标架构,它可能是1 << 31 - 1 = 2147483647
如果是 32 位,并且1 << 63 - 1 = 9223372036854775807
如果是 64 位。
请注意,作为实现限制,您可能无法精确添加 max-int 元素,但数量级将相同。
由于内置map
type 使用 hashmap 实现,访问时间复杂度通常为 O(1),因此向映射添加许多元素是完全可以的,您仍然可以非常快速地访问元素。但请注意,添加许多元素将导致重新散列和重建内部结构,这将需要一些额外的计算 - 在向映射添加新键时可能偶尔会发生这种情况。
如果您可以“猜测”或估计地图的大小,则可以创建大容量的地图以避免重新散列。例如。您可以创建一个包含一百万个元素的空间的地图,如下所示:
m := make(map[string]int, 1e6)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)