【发布时间】:2014-09-30 04:46:02
【问题描述】:
我正在从 ConcurrentHashMap 的 javadoc 中阅读此内容
当发生太多冲突时(即,具有不同哈希码但以表大小为模的键落入同一槽中)时,表会动态扩展,每个映射保持大约两个 bin 的预期平均效果(对应于调整大小的 0.75 负载因子阈值)。
如果每个映射(key->value)是两个 bin,那么负载因子不会是 0.5,而不是 0.75?
【问题讨论】:
-
FWIW,描述写得很糟糕-当存储元素的数量> 0.75乘以槽数/时,“调整大小的负载因子阈值为0.75”意味着“表格动态扩展” buckets,这实际上与“当有太多碰撞时”略有不同 - 你可能仍然有 0 个碰撞,或者每个现有元素都可能发生碰撞。
-
进一步,关于“冲突(即,具有不同哈希码但落入以表大小为模的相同槽中的键)” - 无论哈希码是否相同,冲突都是一种冲突。 ..这种区别对于调整大小是否可以消除冲突是有意义的。