Java 为什么HashMap中的loadFactor默认设置为0.75?

Java 为什么HashMap中的loadFactor默认设置为0.75?,java,Java,我正在阅读HashMap.java的源代码,对loadFactor的默认值感到困惑。正如本课程的作者所提到的 理想情况下,在随机哈希码下,箱中节点的频率遵循泊松分布,默认大小调整阈值为0.75f,平均参数为0.5 我不明白的是0.75f的调整阈值和泊松分布计算的频率之间的关系 如果两者之间有某种关系,那到底是什么关系 如果没有,默认阈值0.75f从何而来?因为即使使用非常好的hashcode实现,也会发生冲突(冲突意味着两个元素适合同一个bucket)。地图中元素的数量越多,发生碰撞的可能性就越

我正在阅读HashMap.java的源代码,对loadFactor的默认值感到困惑。正如本课程的作者所提到的

理想情况下,在随机哈希码下,箱中节点的频率遵循泊松分布,默认大小调整阈值为0.75f,平均参数为0.5

我不明白的是0.75f的调整阈值和泊松分布计算的频率之间的关系

如果两者之间有某种关系,那到底是什么关系


如果没有,默认阈值0.75f从何而来?

因为即使使用非常好的hashcode实现,也会发生冲突(冲突意味着两个元素适合同一个bucket)。地图中元素的数量越多,发生碰撞的可能性就越大。当贴图填充75%时,碰撞的频率会增加。建议使用大约0.75的负载系数,以保持put和get的复杂性在O(1)左右。

因为即使使用非常好的hashcode实现,也会发生冲突(冲突意味着两个元素适合同一个bucket)。地图中元素的数量越多,发生碰撞的可能性就越大。当贴图填充75%时,碰撞的频率会增加。建议使用大约0.75的负载系数来保持put,并使复杂性保持在O(1)左右。

这可能会有所帮助-我以前读过这篇文章,但我认为我期待的是理论上的原因或0.75f值的支持。换句话说,为什么默认加载因子设置为0.75f而不是0.5或任何其他值?或者,我对这个理由的追求毫无意义?无论如何,感谢您的回答:)这可能会有所帮助-我以前读过这篇文章,但我想我期待的是理论上的原因或0.75f值的支持。换句话说,为什么默认加载因子设置为0.75f而不是0.5或任何其他值?或者,我对这个理由的追求毫无意义?无论如何,谢谢你的回答:)谢谢,那么你认为0.75可能来自大量的测试结果?是的。作为一般规则,默认负载系数(.75)在时间和空间成本之间提供了良好的折衷。好的,谢谢:)谢谢,那么你认为0.75可能来自大量的测试结果?是的。作为一般规则,默认负载系数(.75)在时间和空间成本之间提供了良好的折衷。好的,谢谢你:)