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());
}
}输出为1class 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
为什么呢?
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());
}
}输出为1class 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
为什么呢?
2 ws1,ws2是两个对象
WrappedString 没有重写过。。
hashSet 判断两个对象是否相等,是通过equals和hasCode进行判断的所以。