给定以下类,哪个是hashCode()方法的正确实现?
class ValuePair {
public int a, b;
public boolean equals(Object other) {
try {
ValuePair o = (ValuePair) other;
return (a == o.a && b == o.b)
|| (a == o.b && b == o.a);
} catch (ClassCastException cce) {
return false;
}
}
public int hashCode() {
//Provide implementation here.
}
}
请选出3个正确答案。
A)return 0;
B)return a;
C)return a + b;
D)return a – b;
E)return a ^ b;
F)return (a << 16) | b;
这道题中的hashCode方法的作用是什么?
以及hashCode方法和equals方法有什么联系呢?
------解决方案--------------------
E F
hasCode()不同的对象equals()必须返回false。
------解决方案--------------------
按照jse规范所言,如果两个对象使用equals()方法比较相等,那么他们的hashCode()返回值应当一致,楼主的equals判断条件是a=o.a且b=o.b,或者a=o.b且b=o.a,只要满足其中之一两个对象就相等,那么照这种思路,其哈希吗的实现可以有下面两种:
------解决方案--------------------
------解决方案--------------------
实现hashCode有个简单的方法:
读取equals方法使用的所有字段hash码,然后对它们进行^操作