dictionary - map 中的最大元素数

标签 dictionary go hashmap

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

最佳答案

除了 map 长度类型的最大值 int 之外, map 中的元素数量没有理论上的限制。 . int 的最大值取决于你编译到的目标架构,它可能是 1 << 31 - 1 = 2147483647在 32 位的情况下,1 << 63 - 1 = 9223372036854775807在 64 位的情况下。

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

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

如果您可以“猜测”或估计 map 的大小,则可以创建具有大容量的 map 以避免重新散列。例如。您可以创建一个包含一百万个元素空间的 map ,如下所示:

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

关于dictionary - map 中的最大元素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32600763/

相关文章:

python - 插入字典或如果键已经存在而没有散列两次则失败

python - 对 Python 字典列表进行分组

javascript - 用 n 个 gps 坐标测量区域

java - 合并具有重复键的数组映射

java - 将 XML 文件读入 hashmap 并创建新对象

json - 在 TCL 中的字典中创建字典列表

http - Go http 客户端不会自动分解正文

go - 当永远不会评估消息时,应该使用哪种 channel 类型?

c++ - 在 C++ 中的 unordered_map 中查找最大键

go - 获取本地HTTP服务器的端口而不劫持连接