读书人

HashSet的小疑点..

发布时间: 2012-03-19 22:03:05 作者: rapoo

HashSet的小问题..
class WrappedString {
private String s;
public WrappedString(String s) { this.s = s; }

public static void main(String[] args) {
HashSet <Object> hs = new HashSet <Object> ();

String s1 = new String( "gg ");
String s2 = new String( "gg ");

hs.add(s1);
hs.add(s2);
System.out.println(hs.size());
}
}输出为1

class WrappedString {
private String s;
public WrappedString(String s) { this.s = s; }

public static void main(String[] args) {
HashSet <Object> hs = new HashSet <Object> ();
WrappedString ws1 = new WrappedString( "aardvark ");
WrappedString ws2 = new WrappedString( "aardvark ");

hs.add(ws1);
hs.add(ws2);
System.out.println(hs.size());
}
}输出为2 //??????why


为什么呢?

[解决办法]
String 重写过equals和hasCode,你可以看一下Strintg
WrappedString 没有重写过。。
hashSet 判断两个对象是否相等,是通过equals和hasCode进行判断的

所以。。。。

读书人网 >J2SE开发

热点推荐