一个关于java的hashCode方法的问题,请高手指点,谢谢 给定以下类,哪个是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;
------解决方案-------------------- E F hasCode()不同的对象equals()必须返回false。
------解决方案-------------------- 按照jse规范所言,如果两个对象使用equals()方法比较相等,那么他们的hashCode()返回值应当一致,楼主的equals判断条件是a=o.a且b=o.b,或者a=o.b且b=o.a,只要满足其中之一两个对象就相等,那么照这种思路,其哈希吗的实现可以有下面两种: