這裏是其產生的HashSet大小3代替2爲什麼對象不相同添加有相同的值,HashSet的,甚至的hashCode和equals被覆寫
package dump.test;
import java.util.*;
public 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");
String s1 = new String("aardvark");
String s2 = new String("aardvark");
hs.add(ws1); hs.add(ws2); hs.add(s1); hs.add(s2);
System.out.println(hs.size()+hs.toString());
}
public boolean equals(Object aSong) {
String s = aSong.toString();
System.out.println(s);
return s.equals(this.s);
}
public int hashCode() {
System.out.println(this.s + "-" + this.s.hashCode());
return this.s.hashCode();
}
/*public int compareTo(Object aSong) {
String s = aSong.toString();
return this.s.compareTo(s);
}*/
}
代碼
它總是打印下面輸出如果equals和hashCode被覆蓋
你可以看到具有輸出相同的代碼,但算作不同,產生的數爲3
兩個對象,這是如果不重寫equals和hashCode
請協助我如何工作。
你的平等方法甚至不會爲'ws1.equals(ws2)' –