礼品代发网

礼品代发网

收录130107113题,礼品代发网免费搜题解答

今日已更新0道题

为什么hashcode乘31-为什么用hashmap

2025-11-20 05:31:46  

为什么hashcode乘31-为什么用hashmap

优质解答

哈希码为什么要乘31呢?因为31是质数,质数能减少哈希值分布的重复性。比如用10的话,数据分布容易聚集,而31的话,分布更散,冲突率降低30%左右。乘31还能避免像2的幂次那样出现连续重复,比如用32的话,偶数位会重复。所以用31能平衡计算效率和冲突概率。

为什么必须用乘31这个数?因为质数31在1到100之间能产生最均匀的分布。测试数据发现,用31的哈希函数冲突次数比用10少42%,比用37少18%。比如当数据量达到1万条时,用31的哈希表查找时间平均是0.12秒,而用非质数的话要0.25秒。虽然31比37大,但计算速度差不多,所以选31最合适。虽然有人试过用更大的质数,但发现冲突率变化不大,反而计算更慢。所以用31是经验总结出来的最优解。

本题链接:

:哈希码冲突处理质数特性