public class BasicContainer {
public static void main(String[] args) {
Collection c = new HashSet();
c.add("hello");
c.add(new Name("lu","dongdong"));
c.add(new Integer(100));
System.out.println(c.remove(new Integer(100)));
System.out.println(c.remove(new Name("lu","dongdong")));
}
}
class Name {
private String firstName,lastName;
Name(String firstName,String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String toString() {
return firstName + " " + lastName;
}
}
打印出的就是:
true
false
很簡單,Hashset的Remove會執行equals方法去比較傳入的參數和內部存儲的參數,相同的刪除返回true,找不到返回false
而class類型比較的是引用,即便每個字段相同,兩個對象還是不同的,所以你傳一個new的對象,返回false。
而integer比較的是值,只要裡面存的是100,你傳入100,就相同,就能刪除。