サンプル
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);
...