在你的类中覆写hashCode(),如String类的hashCode()如下,你可以按要求自己改: 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; }
public int hashCode()是Object里的方法,他返回一个整型数值,作用是映射他的内存存储地址。任何类都可以通过覆写这个方法来获得自己所希望的hash码,我给你的例子是String类里的hashCode()举例.那些变量也是String里的context,你可以不用理会。 如果你是想通过equals方法来判断对象是否相等,是想比较value或者reference也都可以覆写你类的equals来达到要求。因为equals()方法也是Object里的方法,默认是比较reference的。一般来说,你所熟悉的很多类 ,如Integer,Double,Character等等,他们都覆写了这个方法,所以在你在使用他们时,实现的不是reference而是value比较。
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;
}
如果你是想通过equals方法来判断对象是否相等,是想比较value或者reference也都可以覆写你类的equals来达到要求。因为equals()方法也是Object里的方法,默认是比较reference的。一般来说,你所熟悉的很多类 ,如Integer,Double,Character等等,他们都覆写了这个方法,所以在你在使用他们时,实现的不是reference而是value比较。