【问题标题】:Maximum number of elements in map地图中的最大元素数
【发布时间】:2015-12-12 13:51:39
【问题描述】:

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

【问题讨论】:

    标签: dictionary go hashmap


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      “最大数量”?几乎没有。

      “好主意”?衡量,不可能有一个普遍的答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-24
        • 1970-01-01
        • 1970-01-01
        • 2012-10-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多