Java 如果我们给2^30初始大小和加载因子=1,HashMap中会发生什么?
我搜索了很多,但没有找到大致相同的:- 在这种情况下,如果hashmap达到最大容量,它如何调整大小?Java 如果我们给2^30初始大小和加载因子=1,HashMap中会发生什么?,java,collections,hashmap,Java,Collections,Hashmap,我搜索了很多,但没有找到大致相同的:- 在这种情况下,如果hashmap达到最大容量,它如何调整大小? 它是否会抛出一些异常,因为它无法增加其最大大小(2查看源代码,它只是停止将自身大小调整到该最大大小之外 这意味着(如果您甚至可以在不耗尽内存的情况下达到这一点),您不会得到任何额外的存储桶。但无论如何,您不能得到更多,因为hashCode返回一个int,并且使用2^30,您已经几乎超出了该范围。Java中的数组也不能超出int索引的范围(并且HashMap存储桶存储在一个数组中) 再次假设您有
它是否会抛出一些异常,因为它无法增加其最大大小(2查看源代码,它只是停止将自身大小调整到该最大大小之外 这意味着(如果您甚至可以在不耗尽内存的情况下达到这一点),您不会得到任何额外的存储桶。但无论如何,您不能得到更多,因为
hashCode
返回一个int
,并且使用2^30,您已经几乎超出了该范围。Java中的数组也不能超出int
索引的范围(并且HashMap存储桶存储在一个数组中)
再次假设您有足够的内存,您可以继续添加更多的元素,它们将“碰撞”到相同的存储桶中