示例

List list = new ArrayList();
...

if (!list.contains(someObject)) {
...
list.add(someObject);
...
}

解决方案
给定的示例中,列表“contains”方法将执行线性搜索,如果列表很大,该方法的开销会很大。若更改为集合,将不需要调用 contains,因为集合能够保证唯一性。建议更改:


Set set = new HashSet();
...
set.add(someObject);
...


如果插入顺序很重要,那么使用 LinkHashSet 代替 HashSet。建议更改:


Set set = new LinkedHashSet();
...
set.add(someObject);
...