2015-12-17 32 views
-5

爲什麼只有一個對象被添加,當我嘗試添加兩個具有相同值的字符串給treeSet?爲什麼只有一個對象被添加,當我嘗試添加兩個具有相同值的字符串給treeSet?

TreeSet ts = new TreeSet(); 
ts.add(new String("abc")); 
ts.add(new String("abc")); 

與對象參照或狀態比較嗎?

+3

嗯......你已經回答了你的問題,不是嗎?根據定義, –

+1

集沒有重複。嘗試使用列表。 –

+2

你不需要每次都創建一個'new String'。只需使用'「abc」' –

回答

1

the docs for TreeSet's add method

將指定元素添加到這個集合,如果它是不存在的。更正式地說,如果該集合不包含元素e2(e == null?e2 == null:e.equals(e2)),則將指定的元素e添加到該集合中。如果此集合已包含該元素,則該呼叫將保持集合不變並返回false。

所以它使用值相等,而不是引用相等。這需要遵守承諾Setin its documentation

一個不包含重複元素的集合。更正式地,集合不包含e1和e2這樣的元素對,使得e1.equals(e2)和至多一個空元素。正如其名稱所暗示的那樣,該界面模擬數學集抽象。

0

那是怎樣「設置」 works.Both string objects具有相同的價值,因此,將只有一次在set。內容在set認爲取決於實際值(內容)。

相關問題