繁体   English   中英

如何基于负载因子在ConcurrentHashMap中对元素进行分组

[英]How elements are grouped in a ConcurrentHashMap based on load factor

在某些帖子中,我读到:

ConcurrentHashMap根据负载系数按接近程度对元素进行分组

  1. 这种分组是如何发生的?

  2. 可以说我重写hashCode()函数,以便它始终返回1。现在,如何将loadfactor值插入到ConcurrentHashMap中?

  3. 现在,我重写hashCode()函数,以便它始终返回不同的哈希码。 现在, 更高更低loadfactor值将如何插入ConcurrentHashMap中?

哈希图本质上是一个列表数组。 例如,假设给定的哈希图具有100个列表的数组。 当您向其中添加某些内容时,将为该对象计算hashCode。 然后,使用该值的模数和列表数(在这种情况下为100)来确定将其添加到哪个列表中。 因此,如果添加带有哈希码13的对象,则该对象将被添加到列表13中。如果添加带有hascode 12303512的对象,则其将被添加到列表12中。

负载系数告诉哈希图何时增加列表数量。 它基于整个地图中的项目数量和当前容量。

在第一种情况下,哈希码始终返回1,无论列表中有多少个列表,对象都将最终位于同一列表中(这很糟糕。)在第二种情况下,对象将在列表中更均匀地分布(这是好。)

由于负载因子是基于地图的整体大小而不是列表的大小,因此哈希码的质量并不会真正与负载因子发生相互作用。 在第一种情况下,它会像在第二种情况下一样增长,但是无论如何,所有内容仍将保留在同一列表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM