この質問を見て、Hashset と ArrayList のどちらを使用するかについて興味を持ちました。Hashset のルックアップが改善され、ArrayList の挿入が改善されたようです (多数のオブジェクトに対して)。私の質問は、ArrayList を使用して挿入できず、HashSet を使用して検索できないため、どちらかを選択する必要があるということです。ArrayList を使用して挿入し、HashSet に変換してルックアップを行うと、HashSet に挿入してからルックアップするよりも全体的に遅くなりますか? または、単に ArrayList に固執します。ルックアップは悪くなりますが、挿入によって補われますか?
質問する
4563 次
3 に答える
2
コレクションのサイズと使用方法に大きく依存します。つまり、同じHashSet
ものをコピーに再利用でき、時間を節約できます。または、それらを最新の状態に保つことができます。
HashSet
要素の検索ごとにコピーを作成すると、常に遅くなります。
メモリ消費と操作が少し悪くなりますがLinkedHashSet
、挿入が速く、HashSet
検索速度が速いものを利用することもできます。O(N)
index(int)
于 2013-11-07T15:54:24.927 に答える
1
それはあなたのユースケースに完全に依存します。hashCode
メソッドを正しく実装すると、の挿入操作HashSet
もO(1)
操作になります。(インデックスを使用して)要素にランダムにアクセスする必要がなく、重複したくない場合はHashSet
、より良い選択になります。
于 2013-11-07T15:50:31.377 に答える