码迷,mamicode.com
首页 > 其他好文 > 详细

hashcode解析

时间:2014-12-07 12:30:39      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   sp   for   div   log   ad   

String类的hashcode:

需要说明一下的是:如果没有调用过hashCode(),那么hash的值为0。容易知道这里的value也就是真正保存的字符串的值(也就是“字符串测试”)的char数组,而每个char的值是多少呢?很容易验证:Unicode。

public final class String
{
    private final char value[];     // 保存的字符串
    private final int offset;       // 开始的位置
    private final int count;        // 字符数目
    private int hash;           // 缓存的hash值

public int hashCode() {
    int h = hash;
    if (h == 0) {
        int off = offset;
        char val[] = value;
        int len = count;

            for (int i = 0; i < len; i++) {
                h = 31*h + val[off++];
            }
            hash = h;
        }
        return h;
    }
}

重写Object中的hashcode方法:

@Override
public int hashCode(){
    final int prime = 31;
    int result = 1;
    result = result*prime+id;    //id是int型,没有hashcode方法
    result = prime*result+((name==null)?0:name.hashCode());//name是String类型,有hashcode方法
    return result;
}

hashcode解析

标签:style   blog   ar   color   sp   for   div   log   ad   

原文地址:http://www.cnblogs.com/yjtm53/p/4149226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!