A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© wayonEmes 中级黑马   /  2015-8-1 23:48  /  196 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        原码:
            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的值,这就是这个字符串对象代表的哈希值

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马