範例
List list =
new
ArrayList();
...
if
(!list.contains(someObject)) {
...
list.add(someObject);
...
}
解決方案
在給定的範例中,List "contains" 方法會執行線性搜尋,如果清單很大,成本會很高。如果改成 Set,就不需要呼叫 contains,因為 Set 可以保證唯一性。建議的變更如下:
Set set =
new
HashSet();
...
set.add(someObject);
...
如果插入順序很重要,請利用 LinkHashSet 來取代 HashSet。建議的變更如下:
Set set =
new
LinkedHashSet();
...
set.add(someObject);
...