実装クラスのJavaのリスト

実装クラスのJavaのリスト

この記事は、に基づいてボーエンの仕上げ

ArrayListに、ベクトルとLinkedListは:Javaでは、リスト3つのクラスの合計を達成するためのインタフェース。

ArrayListとVectorがこれを達成するための配列の使用され、それは強力なランダムアクセス機能を有するが、比較的弱いの挿入および削除に対応する能力:のArrayListとVectorが配列の要素間に必要に達成するために使用されていますいいえギャップがされている、つまり、あなたが途中で要素を削除した場合、後ろの席を埋めるために前進してはなりません。私は、これが問題の配列の断片化を防ぐことにあると思いますが、コストの挿入や削除の終了時に比較的小さいです。もう一つの問題は、サイズに同意する配列の初期化時なので、インサートは、現在のスペースの最大サイズよりも大きい場合の要素の数は、新しいメモリ空間を申請する必要がある場合、新しい配列を作成し、過去に既存のデータをコピーしますそれはまた、非常に時間がかかる(ArrayListのデフォルト十分なメモリが50%+ 1の拡張である場合、ベクターは、1回のデフォルトの拡張子です)。だから、両方のランダムアクセスやトラバースのために、それは追加および削除の数が多いためには適していません。

ベクトルとArrayListの違いはあるベクタ・サポート・スレッド間の同期は、唯一つのスレッドを同時にベクトルに書き込むことができるということです。しかし、この機能を実行するためには、使用するのが遅く、コストがかかるかかります。

LinkedListのは、対応する、付加および欠失のコストが比較的小さい、リストを使用して実装するが、弱い上のランダムアクセスする能力です。ListedListはまた、複数のそのような元素の操作などListインタフェース要件、尾部ヘッダ以外の方法を定義し、キュー、スタックまたは使用双方向リストとして使用することができます。

正確に使用する実装クラスの種類は、特定の使用シナリオに依存します。あなたはマルチスレッドに関係していない場合は、ベクトル、何も持っていませんArrayListのは、ときよりランダム訪問、より多くの追加および削除の状況のためのLinkedListを

おすすめ

転載: www.cnblogs.com/jiading/p/11914122.html