2014-02-25 50 views
1

documentation states集不能包含重複Set不能包含重複項。但它確實

但是這個代碼工作正常:

Set<String> vmv = new TreeSet<String>(); 
vmv.add("a"); 
vmv.add("a"); 
System.out.println(vmv.toString()); 

我只是增加了一個副本。有人可以解釋這一點。

+4

請閱讀的Javadoc中,'add'方法做具體是什麼。 –

+0

如果你的意思是,該集合中有第二個元素,以便vmv.toString()導致輸出「[a,a]」...情況並非如此。使用您的代碼,在添加兩次後,集合中只有一個「a」。 – ROT13

回答

5

調用add()具有相同值的兩倍將不會增加它第二次,檢查返回boolean,你會看到,第二次是false,或檢查組的規模,以驗證它並沒有改變後第二次:

Set<String> vmv = new TreeSet<String>(); 

System.out.println(vmv.add("a")); // prints true 
System.out.println(vmv.size()); // prints 1 

System.out.println(vmv.add("a")); // prints false 
System.out.println(vmv.size()); // prints 1 
2

在同一頁面,進一步下跌:

add方法添加指定的元素設置,如果它不存在,並返回一個布爾值,表示是否加入的元素。

......這正是它在做什麼。當你打印最後一組時,你應該只能看到一個「重複」元素的副本。

+1

如果我正確理解你..重複沒有進入,它只是返回false? – user3240944

+0

這完全正確。 –