2011-07-09 73 views

回答

3

沒有必要。 API告訴你它是否已經存在(如果你需要知道的話),並且Collections代碼非常高效 - 比自己檢查它更麻煩。

僅供參考,這裏是這個API:

Set<Integer> set = new HashSet<Integer>(); 
boolean newAdditionToSet = set.add(1); 
System.out.println(newAdditionToSet); // true 
newAdditionToSet = set.add(1); 
System.out.println(newAdditionToSet); // false 

這是 「不好的做法」,因爲該Set 無論如何檢查它。您只需將新元素的工作量加倍,同時保持現有元素的工作量。

1

沒有必要。 Set.add()會檢查你。

根據是否添加該元素,它也會返回true或false。

1

一般來說,插入元素更有效率。對於正常的Set實現,插入代碼幾乎複製了contains調用的工作,因爲它需要替換值,如果它已經存在。所以打電話contains首先是一般浪費時間,並且是一般不好的做法。

但並非總是如此!

一個情況下,你應該叫contains是,如果你不想add調用替換集中的現有價值。這種情況偶爾會出現;例如如果你正在使用該集來規範化一堆值。

相關問題