ArrayListのとLinkedListの類似点と相違点

1.保証スレッドセーフです:ArrayListのとLinkedListのは同期されません、それはスレッドセーフではありません。
2.基礎となるデータ構造:ArrayListの下のオブジェクトの配列を使用して、LinkedListの底二重にリンクされたリストデータ構造を使用して(JDK1.6前循環リストに、JDK1.7サイクル二重連結リストをキャンセルし、双方向循環リストとの間の差を注意:);詳細はJDK1.7、LinkedListの循環リスト最適化を読み出すことができるhttps://www.cnblogs.com/xingele0917/p/3696593 .htmlを
挿入3.および要素は、被写体の位置に影響を与え削除します。

①ArrayListのストレージアレイを使用して、そう挿入素子の位置を受信する衝撃の時間複雑さの要素を除去します。たとえば、次の方法の(E eを)追加行う場合、指定された要素の端部でのArrayListのデフォルトは、このリストに追加され、この時の複雑さはO(1)です。私は((int型のインデックス、Eの要素を追加し、指定した位置に要素を挿入し、削除したい場合でも )) の時間複雑さにO(NI)です。i番目の要素の後の最初のセットで上記の動作を行い、I(NI)の要素ときのビット操作、順方向/逆方向を実行する必要があるからです。
②LinkedListのは、リストメモリを連結要素の挿入、削除時刻複雑さは要素の位置によって影響されない、約O(1)であり、アレイは約O(N)です。
4.高速なランダムアクセスをサポートしています。LinkedListのは、ArrayListのための効率的なランダム要素へのアクセス、およびサポートをサポートしていません。オブジェクトの要素は(GET(int型のインデックス)メソッドに対応する)の要素数である経由して高速なランダムアクセスへのクイックアクセスがあります。
5.メモリフットプリント:無駄なスペースのArrayListは、主に(なぜならArrayListのより多くのスペースを消費する必要があり、その各要素に反映されるいくつかの空き容量、コストおよびスペースのLinkedListを予約しますリストの最後にリストに反映されています直接的かつ即時の前任者と後継者のデータを格納します)。

補足:ランダム・インタフェース

パブリックインターフェースランダム・{ 
}

ソースを表示私たちは、実際には何もランダム・インタフェース定義ことがわかりました。だから、私の意見ではなく、インターフェースはフラグランダム・の何物でもありません。どのようなアイデンティティ?ロゴは、ランダムアクセス機能を備えたこのインタフェースを実装しています。

binarySearchに()メソッドは、それが、その後iteratorBinarySearchを呼び出さない場合、着信リストRamdomAccessインスタンスは、それがある場合、()メソッド、indexedBinarySearch()メソッドを呼び出すかどうかを決定することです

パブリック静的<T> 
  int型binarySearch(?一覧<拡張匹敵する<スーパーT >>リスト、Tキー){ 
    (リストinstanceofはランダム・||はlist.size()<BINARYSEARCH_THRESHOLD)場合
      (キーリスト)Collections.indexedBinarySearchを返します。
    他
      Collections.iteratorBinarySearch(リスト、キー)を返します。
 }

ArrayListには、ランダム・インタフェースを実装し、LinkedListのは達成されません。なぜ?私は、それが構造および基礎となるデータに関連していると思います!
ArrayListの配列は下で、下はLinkedListのリストです。自然のサポートランダムアクセスの配列は、時間計算量はO(1)、非常に高速ランダムアクセスと呼ばれています。時間計算量はO(N)であり、それは高速ランダムアクセスをサポートしていない、特定の場所の要素にアクセスするために特定の場所にリストをトラバースする必要があります。
ArrayListには、ランダム・インターフェースは、彼の高速なランダムアクセスを示す実装しています。RandomAccessインタフェースは、ArrayListには、高速ランダムアクセス機能を持つRandomAccessインタフェースを実装すると言うことではない、ただのアイデンティティであります!

ここで、リスト・トラバーサルモード選択を要約:
ループの通常のリストRandomAccessインタフェース嗜好を実装する、foreachの、続く
リストRandomAccessインタフェースは、嗜好イテレータトラバーサル(底を横断するforeachのイテレータの実装によるものである)、大サイズが実装されていませんデータは、forループの通常使用していません

  

おすすめ

転載: www.cnblogs.com/zhangyaotong/p/11245192.html