ArrayList と LinkedList は両方とも List インターフェイスを実装し、挿入順序を維持します。どちらも非同期クラスです。
Javaのスライス
ただし、ArrayList クラスと LinkedList クラスの間には、以下に示す多くの違いがあります。
配列リスト | リンクリスト |
---|---|
1) ArrayList は内部的に 動的配列 要素を保存します。 | LinkedList は内部的に 二重リンクリスト 要素を保存します。 |
2) ArrayList による操作は 遅い 内部的に配列を使用しているためです。いずれかの要素が配列から削除されると、他のすべての要素がメモリ内でシフトされます。 | LinkedList による操作は、 もっと早く ArrayList よりも二重リンク リストが使用されるため、メモリ内でのビット シフトが必要ありません。 |
3) ArrayList クラスは次のことができます。 リストとして機能する List のみを実装しているためです。 | LinkedList クラスでは、 リストとキューとして機能する どちらも List インターフェイスと Deque インターフェイスを実装しているためです。 |
4) ArrayList は 保存とアクセスに優れています データ。 | リンクリストは 操作に適した データ。 |
5) ArrayList の要素のメモリ位置は連続しています。 | リンクされたリストの要素の場所は伝染しません。 |
6) 一般に、ArrayList が初期化されると、デフォルトの容量 10 が ArrayList に割り当てられます。 | LinkedList にはデフォルトの容量が存在することはありません。 LinkedList では、LinkedList が初期化されるときに空のリストが作成されます。 |
7) 正確に言うと、ArrayList はサイズ変更可能な配列です。 | LinkedList は、リスト インターフェイスの二重リンク リストを実装します。 |
Java での ArrayList と LinkedList の例
ArrayList と LinkedList の両方を使用する簡単な例を見てみましょう。
ファイル名: TestArrayLinked.java
import java.util.*; class TestArrayLinked{ public static void main(String args[]){ List al=new ArrayList();//creating arraylist al.add('Ravi');//adding object in arraylist al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); List al2=new LinkedList();//creating linkedlist al2.add('James');//adding object in linkedlist al2.add('Serena'); al2.add('Swati'); al2.add('Junaid'); System.out.println('arraylist: '+al); System.out.println('linkedlist: '+al2); } }今すぐテストしてください
出力:
arraylist: [Ravi,Vijay,Ravi,Ajay] linkedlist: [James,Serena,Swati,Junaid]
留意事項
ArrayList と LinkedList に関して覚えておくべき重要な点を次に示します。
- 追加率または削除率が読み取りシナリオを超える場合は、LinkedList を使用します。一方、シナリオの読み込み頻度が追加または削除の頻度を超える場合、ArrayList が LinkedList より優先されます。
- ArrayList の要素は LinkedList と比較してよりコンパクトに格納されるため、したがって、ArrayList は LinkedList に比べてキャッシュに適しています。したがって、LinkedList と比較して ArrayList ではキャッシュ ミスの可能性が低くなります。一般に、LinkedListはキャッシュ局所性に乏しいと考えられている。
- LinkedList のメモリ オーバーヘッドは ArrayList に比べて大きくなります。これは、LinkedList には、前後のノードのアドレスを保存する必要があるため、2 つの追加リンク (次と前) があり、これらのリンクが余分なスペースを消費するためです。このようなリンクは ArrayList には存在しません。