私はAndroid用に開発していますが、ArrayListとListの主な違いは何ですか?
5 に答える
Javaでオブジェクトコレクションを処理するために、コレクションインターフェイスが提供されています。これはで利用できますjava.util package
。
「リスト」は、コレクションインターフェイスを拡張するインターフェイスであり、コレクションを操作するためのコレクションインターフェイスよりも何らかの追加のメソッドを提供します。一方、「ArrayList」は「List」インターフェースの実際の実装です。
ArrayListクラスには、Listインターフェイスで使用可能なメソッドに加えて、いくつかのメソッドしかありません。これには大きな違いはありません。唯一の違いは、最初のインターフェイスで親インターフェイスの参照を作成し、2番目のインターフェイスでList(つまり、ArrayListクラス)を実装するクラスの参照を作成していることです。最初のメソッドを使用すると、Listインターフェイスで使用可能なメソッドを呼び出すことができ、ArrayListクラスで使用可能な新しいメソッドを呼び出すことはできません。2番目のメソッドを使用する場合は、すべてを自由に使用できます。 ArrayListで使用可能なメソッド。
編集:
Javaアプリケーションの開発では、コレクションフレームワークオブジェクトを引数としてメソッドに渡すことになっている場合は、次のようにすることをお勧めします。
List tempList = new ArrayList();
somemethodcall(tempList);
将来、パフォーマンスの制約により、ArrayListの代わりにLinkedListまたはListインターフェイスを実装する他のクラスを使用するように実装を変更する場合、1つのポイント(つまり、インスタンス化部分)でのみ変更できるためです。それ以外の場合は、メソッド引数として特定のクラス実装を使用した場合は常に、すべての領域で変更することになります。
user370305 は正確な説明を提供します。これは、Java のコレクション階層を理解するのにも役立ちます。
List
をArrayList
実装するインターフェースです。何らかの種類のを必要とするメソッドを作成しようとしているが、List
実際にどの実装が使用されているか気にしない場合は、 を使用しますList
。
実際にクラスをインスタンス化している場合は、そのうちのList
1つの実装を選択する必要がありますArrayList
List<String> l1 = new ArrayList<String>();
例になります。
インターフェイスをインスタンス化できないため、次のことを行おうとするとエラーが発生します。
List<String> l2 = new List<String>();
ウィキペディアには、配列リストが「動的配列」と呼ばれる良い記事があります。
アプリケーションを最適化しようとしている場合は、記事の横にある表を参照してください。
List
はインターフェイスであり、インターフェイスArrayList
の実装ですList
。このクラスには、インターフェイスArrayList
で使用可能なメソッドに加えて、いくつかのメソッドしかありません。List
JavaBeat -ListとArrayListの違いに関する短い記事をご覧ください。