面试宝典-String hashCode 方法为什么选择数字31作为乘子

第一,31是一个不大不小的质数,是作为 hashCode 乘子的优选质数之一。另外一些相近的质数,比如37、41、43等等,也都是不错的选择。那么为啥偏偏选中了31呢?请看第二个原因。(以降低哈希算法的冲突率)

第二、31可以被 JVM 优化,31 * i = (i << 5) - i

猜你喜欢

转载自www.cnblogs.com/liuwei9002/p/9329172.html