HashCode值的底层计算原理解析
举例:计算字符串 "lyr" 的 hashCode 值 :调用 "lyr".hashCode() 即可得出hashCode 值,为107653.
底层计算原理如下:
public class Test{
public static void main(String[] args){
char[] ch = {'l','y','r'};
System.out.println("l".hashCode());//108
System.out.println("y".hashCode());//121
System.out.println("r".hashCode());//114
int h = 0;
for(char c : ch){
h = 31*h + c;
}
System.out.println(h);//107653
}
}
计算方式中的31这个数的选择:因为 31 * i ==(i << 5) - i,可以将乘法转换为位移与减法,这样计算效率会更快。