web-dev-qa-db-ja.com

ListとArrayListの違いは何ですか?

私は最近オフィスで私のAndroidプロジェクトでArrayListを使用してきましたが、ListとArrayListの間で少し混乱しています。両者の違いは何ですか?また何を使うべきですか?

また、私はそれのいくつかの実装が好きだと思った。

List<SomeObject> myList = new ArrayList<SomeObject>();

ArrayList<SomeObject> myList = new ArrayList<SomeObject>();

これら二つの例の違いは何ですか?

144
Ariel Magbanua

どちらの例でも、リストの実装に違いはありません。ただし、コード内で変数myListをさらに使用できるという点で違いがあります。

リストを次のように定義したとします。

List myList = new ArrayList();

listインタフェースで定義されているメソッドと参照メンバだけを呼び出すことができます。次のように定義したとします。

ArrayList myList = new ArrayList();

listから継承された定義を持つものに加えて、ArrayList固有のメソッドを呼び出し、ArrayList固有のメンバーを使用することができます。

それにもかかわらず、ArrayListに実装された最初の例でListインタフェースのメソッドを呼び出すと、ArrayListのメソッドが呼び出されます(Listインタフェースにはメソッドが実装されていないため)。

それは多相と呼ばれます。あなたはそれについて読むことができます。

160
ATrubka