セットフレームjavaの注意

まず、画像とコレクションフレームワークの全体的な構造は、例示します

.................................................. ...............................

二、三組の詳細Listインタフェースの実装クラス、および顔の質問解析

  1.ArrayList:アレイのパッケージは、可変長配列として理解することができ、それは任意のタイプのデータを追加することができる、メモリ内の連続領域を割り当て、データがオブジェクト型に変換される添加。

    1.1基本となる実装:私たちは、ソースコードを見て、JDKを見つけるのは難しいことではありません、ArrayListの基礎となる実装は、実際にはObject型の配列ですので、配列の特徴のいくつかを持っています

    1.2データアクセス効率に:彼は、基礎となる実装の配列であるので、その配列の添字があるため、より高い効率を探し、直接添字が通過することができますが、追加または削除場合、私たちは、操作に時間を考えます、データの中央を削除するとき、被験者たちアレイの連続性を確保するためには、欠失部位の要素の後ろになるようにアレイを前方に移動され、時間を増加させる、そのようなコピー操作によって達成されるJDKソースが同じです、我々は、上記の追加と削除効率の彼が欠けているように、大幅に効率を下げ、バック、後ろの位置にある要素を増やす必要があります。

    1.3スレッドセーフ:彼は彼のアプローチを変更するために、その同期化されていないロックをスレッドセーフ要求していないので、相対的なスレッドセーフなクラスは、パフォーマンスが良くなります

    1.4推奨使用方法:それはスレッドを要求された場合、一般のArrayListを使用することをお勧めします

 

  2. LinkedListの:ヌルを含む任意のタイプの要素の値を、許可、すべてのオプションリストListインタフェースの動作をサポートします。

    2.1基礎となる実装:LinkedListのは、実装が二重にリンクされたリスト構造が、彼は、アレイは異なるいくつかの特徴を持っていている基礎となります

    2.2データアクセス効率:二重にリンクされたリスト構造、彼のパフォーマンス、高効率の追加および削除を決定し、ゆっくりと見て、私たちが想像することができ、ノードは、ちょうどあなたがリンクを切断するノードの前と後に、時間が追加され、追加されます前後のノードリンクアップ、配列はまた、操作要素をシフトする必要がありませんように、共感、削除が同じである、大幅に彼の効率は増加したが、探しているとき、彼はノードを端から端まで一つ一つを見つけるために必要があります大幅に彼の効率のルックアップを下げる必要な要素、。

    2.3スレッドセーフ:彼のアプローチを変更するには、no同期ロック

    2.4は、使用は推奨されていません:一般的な使用のArrayListで十分です

 

  3.Vector:彼の基本的な実装とArrayListに、配列が達成するために同じように、私は彼の下を繰り返すことはしません

     3.1スレッドセーフ:彼の方法は、同期の変更を使用するため、スレッドセーフが、彼のパフォーマンスの効率は理想的ではありません決定するが、それは一般的に推奨されていません

     3.2は推奨されません:それは必ずしもスレッドセーフでない場合は、お勧めできません。

第三に、顔質問:ArrayListを、LinkedListは、ベクトル差:

  同じポイント:1.リストのすべてのインタフェースの実装クラス

      2.インデックスを繰り返すことができ、整然としています。(ここでインデックスは、インデックスによって要素を見つけることです)

  相違点:1.基本となる実装:ArrayListに、ベクトルの実装が配列され、LinkedListの実装が二重にリンクされたリストであります

      2.スレッド:ベクタスレッドセーフ、LinkedListは、安全ArrayListのスレッド

      3.効率:ArrayListのが速く見つけ、遅く追加や削除、LinkedListのが遅く見え、高速の追加および削除

  

おすすめ

転載: www.cnblogs.com/gaobingbing/p/11369697.html