2

この質問を見て、Hashset と ArrayList のどちらを使用するかについて興味を持ちました。Hashset のルックアップが改善され、ArrayList の挿入が改善されたようです (多数のオブジェクトに対して)。私の質問は、ArrayList を使用して挿入できず、HashSet を使用して検索できないため、どちらかを選択する必要があるということです。ArrayList を使用して挿入し、HashSet に変換してルックアップを行うと、HashSet に挿入してからルックアップするよりも全体的に遅くなりますか? または、単に ArrayList に固執します。ルックアップは悪くなりますが、挿入によって補われますか?

4

3 に答える 3

2

コレクションのサイズと使用方法に大きく依存します。つまり、同じHashSetものをコピーに再利用でき、時間を節約できます。または、それらを最新の状態に保つことができます。

HashSet要素の検索ごとにコピーを作成すると、常に遅くなります。

メモリ消費と操作が少し悪くなりますがLinkedHashSet、挿入が速く、HashSet検索速度が速いものを利用することもできます。O(N) index(int)

于 2013-11-07T15:54:24.927 に答える
1

それはあなたのユースケースに完全に依存します。hashCodeメソッドを正しく実装すると、の挿入操作HashSetO(1)操作になります。(インデックスを使用して)要素にランダムにアクセスする必要がなく、重複したくない場合はHashSet、より良い選択になります。

于 2013-11-07T15:50:31.377 に答える