地图中的最大元素数

时间:2015-09-16 05:55:15

标签: dictionary go hashmap

GO中的地图中可以存储的最大元素数是多少?如果我需要经常访问Map中的数据,那么在长时间运行的程序中继续向Map添加项目并从中检索是否是个好主意?

2 个答案:

答案 0 :(得分:11)

除了地图长度类型的最大值int之外,地图中的元素数量没有理论限制。 int的最大值取决于您编译的目标体系结构,在32位情况下可能为1 << 31 - 1 = 2147483647,在64位情况下可能为1 << 63 - 1 = 9223372036854775807

请注意,作为实现限制,您可能无法准确添加max-int元素,但数量级将相同。

由于内置map类型使用hashmap实现,访问时间复杂度通常为O(1),因此向地图添加许多元素是完全正常的,您仍然可以非常快速地访问元素。请注意,但是添加许多元素会导致重新散列并重建内部,这将需要一些额外的计算 - 在向地图添加新键时偶尔会发生这种情况。

如果可以&#34;猜测&#34;或估计地图的大小,您可以创建具有大容量的地图,以避免重新散列。例如。你可以为这样的一百万个元素创建一个包含空间的地图:

m := make(map[string]int, 1e6)

答案 1 :(得分:1)

&#34;最大数量&#34;?实际上没有。

&#34;一个好主意&#34;?测量,不可能有一般的答案。