程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java容器 collection-下面這個小程序打印出的為什麼是true和false啊,求大神分析一下,萬分感謝~

java容器 collection-下面這個小程序打印出的為什麼是true和false啊,求大神分析一下,萬分感謝~

編輯:編程綜合問答
下面這個小程序打印出的為什麼是true和false啊,求大神分析一下,萬分感謝~

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,就相同,就能刪除。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved