サンプル

List list = new ArrayList();
...

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

解決策
サンプルでは、List の "contains" メソッドは線形検索を実行しますが、リストが大きい場合に負荷がかかる可能性があります。Set に変更すると、Set によって一意性が保証されるため、contains を呼び出す必要はありません。 推奨される変更は以下のとおりです。


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


追加する順序が重要な場合は、HashSet ではなく LinkHashSet を使用します。推奨される変更は以下のとおりです。


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