哈希图中会发生什么 如果我们给出 2^30 的初始大小和负载因子 = 1



我搜索了很多,但没有找到大致相同的内容:-在这种情况下,如果哈希图调整大小达到最大容量,它如何工作?它是否因为无法增加其最大大小 (2<<30( 而引发一些异常?

查看源代码,它只是停止调整自己的大小超过该最大大小。

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

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

相关内容

最新更新