gpt4 book ai didi

java - 如何根据负载因子对 ConcurrentHashMap 中的元素进行分组

转载 作者:太空宇宙 更新时间:2023-11-04 13:04:20 24 4
gpt4 key购买 nike

在一些帖子中我读到:

ConcurrentHashMap groups elements by a proximity based on loadfactor

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

  2. 假设我重写了 hashCode() 函数,使其始终返回 1。现在 loadfactor较高较低值如何影响对 ConcurrentHashMap 的插入?

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

最佳答案

HashMap 本质上是一个列表数组。例如,假设给定的 hashmap 有一个包含 100 个列表的数组。当您向其中添加某些内容时,系统会计算该对象的 hashCode。然后使用该值和列表数量(在本例中为 100)的模来确定将其添加到哪个列表。因此,如果您添加哈希码为 13 的对象,它将添加到列表 13。如果您添加哈希码为 12303512 的对象,它将添加到列表 12。

负载因子告诉 HashMap 何时增加列表数量。它基于整个 map 中的项目数量和当前容量。

在第一个场景中,哈希码始终返回 1,无论有多少个列表,您的对象最终都会出现在同一个列表中(这很糟糕。)在第二种场景中,它们将更均匀地分布在列表中(这很好。)

由于负载因子基于 map 的整体大小而不是列表的整体大小,因此哈希码的质量实际上并不与负载因子相互作用。在第一种情况下,它会像第二种情况一样增长,但无论如何,所有内容仍然会出现在同一个列表中。

关于java - 如何根据负载因子对 ConcurrentHashMap 中的元素进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34638635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com