1.选择系数时要选择尽量大的系数,因为计算出来的hash值越大,所谓的“冲突”就越小。
2.31只占用5bits,相乘造成溢出的概率较小。
3.31可以由i*31==(i<<5)-1来表示,现在很多虚拟机里都做多优化。
4.31是个素数,素数的作用就是如果我用一个数乘以这个素数,那么最终的结果只能被只能被素数本身,和被乘数和1来整除(减少冲突)。
为什么复写的hashCode方法里面会有31这个数?
最新推荐文章于 2023-02-26 20:48:55 发布
1.选择系数时要选择尽量大的系数,因为计算出来的hash值越大,所谓的“冲突”就越小。
2.31只占用5bits,相乘造成溢出的概率较小。
3.31可以由i*31==(i<<5)-1来表示,现在很多虚拟机里都做多优化。
4.31是个素数,素数的作用就是如果我用一个数乘以这个素数,那么最终的结果只能被只能被素数本身,和被乘数和1来整除(减少冲突)。