基本的に、大量のオブジェクトのデータ構造があり、この構造は複数のスレッドからアクセスされるため、それを考慮する必要があります。
多くの反復とオブジェクト操作を常に実行する必要があります (各メイン ループの反復により、最悪の場合はデータ構造内のすべてのオブジェクトが変更され、最良/通常の場合は何も変更されない可能性があります)。
現在、私はCopyOnWriteArrayList
自分の構造として a を使用しています。さらに、繰り返しのたびに、リストのサイズを抑えるために、重複を追加しないようにしています。
これらの操作のためにスレッドを保持することを避けたいので、locks/synchronized の使用は理想的ではありません。
私が知る限り、これに対する私のオプションは次のとおりです。
contains()
追加する各要素のチェックを実行します- リストからa を作成し、
HashSet
元に戻します (基本的にすべての重複を削除します) 。 ConcurrentHashMap
データ構造にはリストの代わりに a を使用します- 他の何か?
ArrayLists
オブジェクト操作と重複チェックは厳密にa HashMap
. 私の場合は両方が必要になるため、ここで最善の解決策は何かと考えています。
また、要素の順序は問題ではないことにも言及する必要があります。
編集:これをさらに明確にするために、コレクションには要素が常に追加、削除、および変更されます。どの程度までは特定の実行時間 (通常はランダムなイベントに基づく) に依存するため、どのくらいの頻度で発生するかについての仮定には注意が必要です。発生が保証されている唯一のことは、各要素に対して複数のチェックを実行して、コレクションが毎回完全に繰り返されることです。