Java:在将对象添加到Set时如何使用equals()和hashCode()?

时间:2014-08-31 09:18:48

标签: java collections set equals hashcode

如果我有这段代码:

public class Due {
    // TEST 3
    //Collection<Due> s = new HashSet<Due>();
    static Collection<Due> s = new HashSet<Due>();
    static int k,j;
    Due(int k, int j){
        this.k=k; this.j = j;
    }
    public boolean equals(Object d){
        return k-j==((Due)d).j - ((Due)d).k;
    }
    public int hashCode(){
        return 1;
    }
    public static void main(String[] args) {
        s.add(new Due(2,2));
        s.add(new Due(0,5));
        s.add(new Due(3,3));
        s.add(new Due(5,0));
        System.out.println(s.size());
        for(Due x:s){System.out.println(x.k + " "+x.j);}
    }    
}

每次我将对象插入HashSet时,它是否会调用equals()和HashCode()以确定它是否已经存在于内部? 在这种情况下,s.add(new Due(0,5));等于s.add(new Due(5,0));? 如果没有定义equals()hashCode(),会发生什么?

0 个答案:

没有答案