JavaのリストとArrayListの違い
コンテンツ
ListおよびArrayListは、Collectionフレームワークのメンバーです。リストは、各要素がオブジェクトであり、要素がそこの位置(インデックス)によってアクセスされるシーケンス内の要素のコレクションです。 ArrayListは、必要に応じてサイズを増減するオブジェクトの動的配列を作成します。 ListとArrayListの主な違いは、 リスト インターフェースであり、 配列リスト クラスです。以下に示す比較チャートを使用して、ListとArrayListの違いを調べてみましょう。
- 比較表
- 定義
- 主な違い
- 結論
比較表
比較の根拠 | リスト | 配列リスト |
---|---|---|
ベーシック | リストはインターフェースです | ArrayListは標準のコレクションクラスです。 |
構文 | インターフェースリスト | クラスArrayList |
拡張/実装 | リストインターフェイスは、コレクションフレームワークを拡張します。 | ArrayListはAbstractListを拡張し、List Interfaceを実装します。 |
名前空間 | System.Collections.Generic。 | System.Collections。 |
作業 | インデックス番号に関連付けられている要素(オブジェクト)のリストを作成するために使用されます。 | ArrayListは、オブジェクトを含む動的配列を作成するために使用されます。 |
リストの定義
リストは インタフェース を拡張する コレクション フレームワーク。リストインターフェイスは、順番に配置される要素のコレクションを記述します。リストインターフェイスは、次のような標準のコレクションクラスによって実装されます ArrayList、LinkedList、CopyOnWriteArrayList、Vector、Stack。リストインターフェイスには、インデックス番号に関連付けられた要素があります。リスト内の位置(インデックス)でリスト内の要素にアクセスできます。 Listインターフェースを使用して作成されたリストは、ゼロベースのインデックスで始まります。
Collectionフレームワークによって継承されたメソッドに加えて、Listインターフェイスは独自のメソッドも定義します。 Listインターフェースによって追加されるメソッドは、 add(int、E) そして addAll(int、Collection)。これらのメソッドは、インデックスによってリストに要素を追加します。リスト内のメソッドは、次のような例外をスローする場合があります UnsupportedOperationException メソッドがリストを変更できない場合。リスト内のあるオブジェクトがリスト内の別のオブジェクトと互換性がない場合、 ClassCastException nullオブジェクトをリストに挿入しようとすると、リストにnull要素は許可されません。 NullPointerException スローされます。
リストから要素を取得するには 取得する() 方法。リスト内の要素の値を設定するには、次を使用します セットする() 方法。メソッドを使用してリストからサブリストを取得することもできます sublist()。リストの代わりにサブリストを操作すると便利になります。
ArrayListの定義
標準のCollectionクラスの1つはArrayListで、これは拡張します AbstractList クラスも実装します リスト インタフェース。 ArrayListクラスを使用して、必要に応じて拡大および縮小する動的配列を作成します。 ArrayListクラスを使用して作成されるリストは、オブジェクトの配列にすぎません。 Javaでは、標準配列の長さは固定されているため、事前に配列のサイズを知っておく必要があります。ただし、実行時まで必要な配列の長さがわからない場合があります。そのため、コレクションフレームワークでは、この問題を克服するためにArrayListクラスを導入しました。
ArrayListには、初期容量で配列を作成するコンストラクターがあります。 ArrayListクラスのオブジェクトの容量は、要素が配列に追加されると自動的に増加しますが、メソッドを使用してArrayListのオブジェクトの容量を手動で増加できます ensureCapacity()。後でメモリを再割り当てする代わりに、最初にアレイの容量を増やすことをお勧めします。再割り当ては、メモリを一度に割り当てるよりもコストがかかるためです。
- ListとArrayListの最も重要な違いの1つは、リストが インタフェース ArrayListは標準のコレクションです クラス.
- リストインターフェイスは コレクション フレームワークに対して、ArrayListは AbstractList クラスと実装 リスト インターフェース。
- Listインターフェースの名前空間は System.Collection.Generic 一方、ArrayListの名前空間は System.Collection.
- リストインターフェイスは、シーケンスに格納され、インデックス番号で識別またはアクセスされる要素のコレクションを作成します。一方、ArrayListは、必要に応じて動的に配列を拡大できるオブジェクトの配列を作成します。
結論:
ArrayListは、標準Javaの静的配列の問題を克服します。つまり、配列は一度作成されるとサイズを大きくすることはできません。 ArrayListを使用して配列を作成すると、必要に応じてサイズを拡大および縮小できる動的配列が作成されます。標準のCollectionクラスArrayListは、Listインターフェイスを拡張します。