黑马程序员技术交流社区
标题:
String类的哈希值算法
[打印本页]
作者:
wayonEmes
时间:
2015-8-1 23:48
标题:
String类的哈希值算法
原码:
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
举例说明: String s ="abc";int num =s.hashCode();//num=96354
如果字符串非空,把字符串s转成字符数组
s的长度为3,从0到3循环其中的字符
定义变量h,初始值为0
0索引位置上数组为a,它的ASCII码值为97,那么第一遍循环后h=31*0+97=97
1索引位置上数组为b,它的ASCII码值为98,那么第二遍循环后h=31*97+98=3105
2索引位置上数组为c,它的ASCII码值为99,那么第三遍循环后h=31*3105+99=96354
返回h的值,这就是这个字符串对象代表的哈希值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2