HashMap中的存储桶数是什么意思?


问题内容

我在读有关Hashmap的文章。

HashMap的实例具有两个影响其性能的参数:初始容量和负载因子。容量是哈希表中的存储桶数。

哈希图中是否有10个键值对。假设那里的哈希码是不同的。

每个人都住在一个桶里吧?或者一个存储桶可以有多个键值对存储桶?

因为bucket在英语中意味着可以放置许多物体的大事。


问题答案:

是的,确切地说,每个存储桶可以有多个键值对。

对象hashCode()通过以下表达式确定要进入哪个存储桶:object.hashCode() % n其中n =存储桶总数,%是模运算符。

大多数情况下,对象会在各个存储桶中很好地分布,但是您无法保证它们会到达何处。这取决于数据和hashCode函数。

显然,当hashCode实现不佳时,hashmap的性能将下降。

另请阅读有关equals / hashcode合约的信息。