不可以
首先,两个对象相等,则地址一定相等,从源码即可看到,equals比较的是地址值
public boolean equals(Object obj) {
return (this == obj);
}
如果两个对象x和y满足 x.equals(y) true,说明内存地址一样,内存地址一样,则调用hashCode()得出的hashcode值肯定也是一样的
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;
}
总结:
1、如果两个对象相同(equals方法返回true),那么它们的 hashCode 值一定要相同;
2、如果两个对象的 hashCode 相同,它们并不一定相同。
精品推荐
发布者:admin,如若转载,请注明出处:https://ai1024.vip/42930.html