HashMap中的存储桶数是什么意思?
问题内容:
我在读有关Hashmap的文章。
HashMap的实例具有两个影响其性能的参数:初始容量和负载因子。容量是哈希表中的存储桶数。
哈希图中是否有10个键值对。假设那里的哈希码是不同的。
每个人都住在一个桶里吧?或者一个存储桶可以有多个键值对存储桶?
因为bucket
在英语中意味着可以放置许多物体的大事。
问题答案:
是的,确切地说,每个存储桶可以有多个键值对。
对象hashCode()
通过以下表达式确定要进入哪个存储桶:object.hashCode() % n
其中n =存储桶总数,%
是模运算符。
大多数情况下,对象会在各个存储桶中很好地分布,但是您无法保证它们会到达何处。这取决于数据和hashCode函数。
显然,当hashCode实现不佳时,hashmap的性能将下降。
另请阅读有关equals / hashcode合约的信息。