黑马程序员技术交流社区

标题: 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