8

もちろん、arraylist と linkedlist のパフォーマンスの違いについては知っています。私は自分でテストを実行しましたが、非常に大きなリストの場合、arraylist と linkedlist の間で挿入/削除と反復の時間とメモリに大きな違いがあることを確認しました。

(私が間違っていたら訂正してください) 私たちは通常、次の理由から、リンクリストよりも配列リストを好みます。

1)実際には、挿入/削除よりも頻繁に反復を行います。そのため、反復は挿入/削除よりも高速であることが望ましいです。

2)linkedlist のメモリ オーバーヘッドは、arraylist よりもはるかに大きい

3)バッチで挿入/削除するときにリストをリンクリストとして定義し、反復中に配列リストとして定義する方法はありません。これは、arraylist と linkedlist のデータ ストレージ手法が根本的に異なるためです。

3 番目の点については間違っていますか [そう願っています :)]? 単一のリストでこれら 2 つのデータ構造の利点を得る可能性はありますか? おそらく、データ構造の設計者はそれについて考えたに違いありません。

4

3 に答える 3

1

よりパフォーマンスの高いコレクションの実装を探している場合は、Javolutionをチェックしてください。そのパッケージは、FastListFastTableを提供します。これにより、少なくともリンク リストと配列リストのどちらかを選択するコストが削減される可能性があります。

于 2012-11-18T19:36:41.087 に答える
0

Clojureの「ベクトル」(内部の単純な配列以上のもの)を調べたいと思うかもしれません:http://blog.higher-order.net/2009/02/01/understanding-clojures-persistentvector-implementation /。ルックアップと挿入用のO(log32 n)です。

これらはJavaから直接使用できることに注意してください。(実際には、Javaコードで実装されています。)

于 2012-11-18T19:40:31.487 に答える