【问题标题】:What Happens In a HashMap If we give 2^30 initial size and load factor= 1?如果我们给出 2^30 的初始大小和负载因子 = 1,HashMap 会发生什么?
【发布时间】:2019-07-12 08:00:04
【问题描述】:

我搜索了很多,但没有找到相同的结果:- 如果在这种情况下达到最大容量,hashmap 调整大小如何工作? 它是否会因为无法增加其大小 max size(2

【问题讨论】:

    标签: java collections hashmap


    【解决方案1】:

    查看源代码,它只是停止将自身调整到超出最大尺寸。

    这意味着(如果您甚至可以在不首先耗尽内存的情况下达到这一点),您将不会获得任何额外的存储桶。但是无论如何你不能得到更多,因为hashCode 返回一个int,并且使用 2^30,你也已经几乎达到了那里的范围。 Java 中的数组也不能超过int-indexed(HashMap 存储桶存储在数组中)。

    再次假设您有足够的内存,您可以继续添加更多元素,它们只会“碰撞”到相同的存储桶中。

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 2010-11-22
      • 2013-07-28
      • 1970-01-01
      • 2020-04-21
      • 2019-03-20
      • 1970-01-01
      • 2019-12-24
      • 2011-10-30
      相关资源
      最近更新 更多