HashMap中表数组的实际索引是什么?

时间:2016-06-14 03:09:28

标签: java hashmap

当我们在HashMap中添加整数作为键时,默认的hashcode()是整数的值,我们知道hashcode对应于bucket,它是放置Entry对象的表数组的索引。如果整数是1000,数组的大小是1000?

1 个答案:

答案 0 :(得分:6)

不,通常,散列桶数组从小开始(当前实现中为16),并且随着表中条目数量的增加超出“加载因子”而扩展。在每次扩展时,阵列的大小加倍。实际的哈希表索引计算为hashCode % numberOfBuckets,因此哈希码值“折叠”以适合当前表的大小。

我建议你去看看source code on grepcode.com

请注意,调整散列桶数组的大小是一项非常昂贵的操作,因为需要重新计算所有散列索引并将所有条目重新插入到新数据结构中,因此如果可能的话,可以提前猜测必要的大小。< / p>