当前位置: 代码迷 >> J2SE >> 重写hashCode使两个不同的对象的返回值相同,但equals还是相等?该怎么解决
  详细解决方案

重写hashCode使两个不同的对象的返回值相同,但equals还是相等?该怎么解决

热度:61   发布时间:2016-04-24 01:56:12.0
重写hashCode使两个不同的对象的返回值相同,但equals还是相等?
Java code
class A{        @Override    public int hashCode() {        // TODO Auto-generated method stub        return 1;    }        public static void main(String[] args) {        System.out.println(new A().equals(new B()));//false 这里为什么还是false??        System.out.println(new A().hashCode()==new B().hashCode());//true    }    }class B{        @Override    public int hashCode() {        // TODO Auto-generated method stub        return 1;    }}


------解决方案--------------------
重写hashCode,不跟equals相同。

你需要重载equals方法,才可以呢。
------解决方案--------------------
也要重写equals
------解决方案--------------------
Java code
    public boolean equals(Object anObject) {    if (this == anObject) {        return true;    }    if (anObject instanceof String) { // 判断目标对象是否为String        String anotherString = (String)anObject;        int n = count;        if (n == anotherString.count) {        char v1[] = value;        char v2[] = anotherString.value;        int i = offset;        int j = anotherString.offset;        while (n-- != 0) {            if (v1[i++] != v2[j++])            return false;        }        return true;        }    }    return false;    }
  相关解决方案