自己写的类怎样覆盖equals()、hashCode()? 
最好写一段代码

解决方案 »

  1.   

    如果用eclipse
    点source==>generate hashCode() and equals()...
    然后选择字段做比较和产生hashcode
      

  2.   


    public class Test {
    private String name; public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } @Override
    public int hashCode() {
    return ((name == null) ? 0 : name.hashCode());
    }
    @Override
    public boolean equals(Object obj) {
    if (this == obj)
    return true;
    if (obj == null)
    return false;
    if (getClass() != obj.getClass())
    return false;
    final Test other = (Test) obj;
    if (name == null) {
    if (other.name != null)
    return false;
    } else if (!name.equals(other.name))
    return false;
    return true;
    }
    }
      

  3.   

    直接在派生类中重写equals()和hashCode()方法不行吗?
      

  4.   

    String 中这两个方法的实现: public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof 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;
        }  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;
        }