範例

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);
...