如果我有这段代码:
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()
,会发生什么?