9

ArrayList.removeAll多くの人が、大きなサイズの配列では非常に遅いと言っています。

この記事では、ArrayList.removeAll の速度に対する 2 つの最適化されたソリューションを提供しますが、それらをクラス自体に実装する必要があり、修正として外部で使用することはできません。

ArrayList ソース コードをコピーして独自のバージョンを使用する以外に、この種の修正を適用する方法はありますか?

編集:おそらくArrayList.removeAllなしでやりたいことを行う方法があるので、これの必要性を追加する必要があると思います。

私はそれぞれについて2つのリストを持っています70,000 longs。それらはほとんど同じですが、1 つのリストには 2 番目のリストにない数がいくつかあり、それらを見つけたいと考えています。それらを見つける唯一の方法はfirst.removeAll(second)、違いを見つけることです。別の方法はありますか?

4

2 に答える 2

9

HashSet や TreeSet など、削除時間が大幅に短縮されるデータ構造を使用する場合はどうでしょうか。したがって、arraylist を使用する大きな理由は、レコードにアクセスするための高速なアクセス時間 O(1) によるものです。しかし、違いを設定しようとしている場合は、セットを使用する必要があります。ちょっとした考え。

于 2011-07-24T02:35:00.450 に答える
1

のサブクラスを作成して、ArrayListそのメソッド (および場合によっては他のメソッド) を最適化できます。

于 2011-07-24T00:48:48.703 に答える