String类的hashcode计算过程如上,主要就是对每一位进行遍历,用当前位数的ascll码值加上前面每位的累加和。
为什么要用31?
1)i31=i32-i=(i<<5)-i,位运算能加快运算速度
2)质数产生hash冲突的概率较小。取的数太大的话又容易溢出。
String类的hashcode计算过程如上,主要就是对每一位进行遍历,用当前位数的ascll码值加上前面每位的累加和。
为什么要用31?
1)i31=i32-i=(i<<5)-i,位运算能加快运算速度
2)质数产生hash冲突的概率较小。取的数太大的话又容易溢出。