小さなセット (たとえば 1 ~ 100 要素)でのさまざまな Java セット実装のパフォーマンスに関する良い参考文献はありますか、または誰かが詳しく教えてくれますか? O(1) 対 O(log n) の話は、これらのサイズにはほとんど関係ありませんが、これらの小さなセットを何百万も処理する必要があるため、パフォーマンスは確かに重要です。私が見つけたほとんどの参考文献は、これについてあまり言及していません。
これらのセットで次のことを行う必要があります (通常、セットごとに数回のみ)。
- 新しいセットの初期化および/または古いセットのハードコピー
- 要素の追加/削除
- セットの反復
hashCode()
セット全体の を計算する
これらは比較するための実行可能なオプションだと思います(Tの比較/ハッシュはほとんど無料であると仮定します):
- HashSet<T> : 反復が苦手なようです (したがって at
hashCode()
) - TreeSet<T> : 途方もなく高いオーバーヘッドがあるようです
- LinkedHashSet<T> : これについてまったく経験がありません。オーバーヘッドが高いですか?
- ArrayList<T> : それ自体は高速ですが、セットではないため、必要なような醜いトリックが
Collections.sort()
必要です...
上記のうち、一般的に好まれているのはどれですか? それとも自分のSmallSet<T>
クラスを書くべきですか?