JavaでのArrayListとVectorの違い
コンテンツ
ArrayListとVectorは、どちらもCollection Framework階層の下のクラスです。 ArrayListとVectorは両方とも、必要に応じて配列のサイズを拡大できるオブジェクトの動的配列を作成するために使用されます。 ArrayListとVectorを区別する2つの基本的な違いがあります。Vectorは、後でコレクションクラスをサポートするように再設計されたLegacyクラスに属しますが、ArrayListは標準のコレクションクラスです。もう1つの重要な違いは、ArrayListが非同期であることです。ベクトルは同期されます。
以下に示す比較チャートを使用して、他のいくつかの違いを調べてみましょう。
- 比較表
- 定義
- 主な違い
- 類似点
- 結論
比較表
比較の根拠 | 配列リスト | ベクター |
---|---|---|
ベーシック | ArrayListクラスは同期されません。 | ベクトルクラスは同期されます。 |
レガシークラス | ArrayListは標準のCollectionクラスです。 | ベクターは、コレクションクラスをサポートするために再設計されたレガシークラスです。 |
クラス宣言 | クラスArrayList | クラスベクトル |
再配分 | 指定しない場合、ArrayListはそのサイズの半分だけ増加します。 | 指定しない場合、ベクトルはサイズが2倍になるように増分されます。 |
性能 | ArrayListは非同期であるため、Vectorよりも高速に動作します。 | Vectorは同期されるため、ArrayListよりも動作が遅くなります。 |
列挙/イテレータ | ArrayListは、Iteratorインターフェイスを使用して、ArrayListに格納されているオブジェクトを走査します。 | Vectorは、EnumerationおよびIteratorインターフェイスを使用して、Vectorに格納されているオブジェクトを走査します。 |
ArrayListの定義
ArrayListは、標準コレクションクラスのリストに属します。クラスArrayListは、 java.util パッケージ、それは拡張します AbstractList これも標準のコレクションクラスであり、実装します リスト、コレクションインターフェイスで定義されているインターフェイス。 Javaでは、標準配列は常に固定長です。それは一度作成されたことを意味します。サイズが動的に拡大または縮小することはありません。そのため、使用している配列の長さに関する事前知識が必要です。ただし、実行時に必要な長さが明らかになることがあり、JavaがArrayListを導入したこのような状況を処理することがあります。
ArrayListは、オブジェクトへの参照を保持する配列の動的作成に使用されるクラスです。この配列は、必要に応じてサイズが大きくなる可能性があります。クラス宣言は次のとおりです。
クラスArrayList ここで、Eは配列が保持するオブジェクトのタイプを指定します。作成される配列は可変長であり、オブジェクトがリストに追加またはリストから削除されると、サイズが増減します。 ArrayListは同期されていません。つまり、複数のスレッドが同時に配列を操作できます。たとえば、あるスレッドが配列にオブジェクト参照を追加し、別のスレッドが同じ配列から同時にオブジェクト参照を削除している場合です。 ArrayListクラスを使用した動的配列の作成: 配列リスト 上記のコードでは、それを見ることができます。文字列型のオブジェクトの配列を作成しました。 add()メソッドを使用していくつかのオブジェクトを配列S1に追加し、後でremove()メソッドを使用していくつかのオブジェクトを削除しました。配列の初期サイズを指定しない場合、長さは「0」になります。ご覧のとおり、要素を追加および削除すると、配列のサイズが拡大および縮小します。 ベクターは、コレクションフレームワーク階層のコレクションクラスをサポートするために再設計されたレガシークラスです。ベクトルクラスは、 java.util パッケージ、拡張 AbstractList クラスによって実装され リスト インタフェース。 Vectorクラスは次のように宣言されます。 クラスベクトル ここで、Eは配列に格納されるオブジェクトのタイプを定義します。 Vectorクラスを使用して作成された配列は可変長です。増分が指定されていない場合、サイズが2倍に増加します。 Vectorを使用した配列の作成を理解しましょう。 ベクター 上記のコードでは、文字列オブジェクトの配列を宣言しながら、Vectorのコンストラクターでそれぞれサイズと増分値を特に言及していることがわかります。したがって、配列の制限が終了すると、宣言中にコンストラクターに提供された値で増加することがわかります。 最後に、ArrayListを使用するほうがVectorを使用するよりも高速で優れているため、VectorListを使用するよりも優れていると言います。
ベクトルの定義
類似点:
結論: