爲什麼只有一個對象被添加,當我嘗試添加兩個具有相同值的字符串給treeSet?爲什麼只有一個對象被添加,當我嘗試添加兩個具有相同值的字符串給treeSet?
TreeSet ts = new TreeSet();
ts.add(new String("abc"));
ts.add(new String("abc"));
與對象參照或狀態比較嗎?
爲什麼只有一個對象被添加,當我嘗試添加兩個具有相同值的字符串給treeSet?爲什麼只有一個對象被添加,當我嘗試添加兩個具有相同值的字符串給treeSet?
TreeSet ts = new TreeSet();
ts.add(new String("abc"));
ts.add(new String("abc"));
與對象參照或狀態比較嗎?
看the docs for TreeSet
's add
method
將指定元素添加到這個集合,如果它是不存在的。更正式地說,如果該集合不包含元素e2(e == null?e2 == null:e.equals(e2)),則將指定的元素e添加到該集合中。如果此集合已包含該元素,則該呼叫將保持集合不變並返回false。
所以它使用值相等,而不是引用相等。這需要遵守承諾Set
in its documentation
一個不包含重複元素的集合。更正式地,集合不包含e1和e2這樣的元素對,使得e1.equals(e2)和至多一個空元素。正如其名稱所暗示的那樣,該界面模擬數學集抽象。
那是怎樣「設置」 works.Both string objects
具有相同的價值,因此,將只有一次在set
。內容在set
認爲取決於實際值(內容)。
嗯......你已經回答了你的問題,不是嗎?根據定義, –
集沒有重複。嘗試使用列表。 –
你不需要每次都創建一個'new String'。只需使用'「abc」' –