import java.util.*;
public class K164 implements Comparable{
private String s;
public K164(String s){
this.s = s;
}
public static void main(String...abc){
HashSet<Object> hs = new HashSet<Object>();
K164 k1 = new K164("abc");
K164 k2 = new K164("abc");
String s1 = new String("abc");
String s2 = new String("abc");
hs.add(k1);
hs.add(k2);
hs.add(s1);
hs.add(s2);
System.out.println(hs.size());
System.out.println(k1.equals(k2));
}
public int compareTo(Object k){
return s.compareTo(((K164)k).s);
}
public int hushCode(){
return 1;
}
public boolean equals(Object o){
if((o instanceof K164)&&(((K164)o).s==this.s)){
return true;
}
else
return false;
}
}
结果打印的是:3
我预期打印2。。。。
有些疑惑明明对K164这个类合法重写了hushCode()和equals()方法为什么在添加进集合的时候 还是认为k1和k2是相同的元素呢???
------解决方案--------------------
你太粗心了,把hashCode写成什么了,你看看:public int hushCode()改下就好了.
------解决方案--------------------
jf
------解决方案--------------------
((K164)o).s==this.s
...
------解决方案--------------------
添加进HashSet的三个是k1 k2和s1,s2其一