HashCode为什么要用31作为乘数?

HashMap的HashCode生成代码中使用31作为乘数的原因在于减少哈希碰撞并提高数据分布的均匀性。根据StackOverflow上的讨论,乘以31可以在保持精度的同时,使得数据在哈希表中的分布更散列,从而提升HashMap的性能。测试显示,与其他乘数如33、37相比,31能达到较好的平衡点,避免因乘积过大导致精度损失。
摘要由CSDN通过智能技术生成

在HashMap中hashcode生成的代码中,竟然有一个31的固定值,这是为什么呢,这个咱们可以来看国外大神在stackoverflow上的回答。

其中点赞数最高的是下面这个回答:

这个在理论的高度上做出了解释,好像还是不是很有实战意义,来看第二个呼声最高的回答

这个回答就相当具有实战意义了,只要我们本地准备单词表,就能对31,33,37,39和41这些样本进行逐个测试。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值