![](/img/trans.png)
[英]How to add elements to ConcurrentHashMap using ExecutorService
[英]How elements are grouped in a ConcurrentHashMap based on load factor
在某些帖子中,我读到:
ConcurrentHashMap根据负载系数按接近程度对元素进行分组
这种分组是如何发生的?
可以说我重写hashCode()
函数,以便它始终返回1。现在,如何将高和低的loadfactor
值插入到ConcurrentHashMap中?
现在,我重写hashCode()
函数,以便它始终返回不同的哈希码。 现在, 更高和更低的loadfactor
值将如何插入ConcurrentHashMap中?
哈希图本质上是一个列表数组。 例如,假设给定的哈希图具有100个列表的数组。 当您向其中添加某些内容时,将为该对象计算hashCode。 然后,使用该值的模数和列表数(在这种情况下为100)来确定将其添加到哪个列表中。 因此,如果添加带有哈希码13的对象,则该对象将被添加到列表13中。如果添加带有hascode 12303512的对象,则其将被添加到列表12中。
负载系数告诉哈希图何时增加列表数量。 它基于整个地图中的项目数量和当前容量。
在第一种情况下,哈希码始终返回1,无论列表中有多少个列表,对象都将最终位于同一列表中(这很糟糕。)在第二种情况下,对象将在列表中更均匀地分布(这是好。)
由于负载因子是基于地图的整体大小而不是列表的大小,因此哈希码的质量并不会真正与负载因子发生相互作用。 在第一种情况下,它会像在第二种情况下一样增长,但是无论如何,所有内容仍将保留在同一列表中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.