logo

リストと配列リストの違い

Java コレクションは、オブジェクトのグループを処理するためのアーキテクチャを提供します。コレクションとは、オブジェクトの単一単位を意味します。これにより、オブジェクトのグループを 1 つの単位として保存し、操作できるようになります。

コレクション フレームワークを使用すると、オブジェクトのグループに対する検索、並べ替え、挿入、削除、操作などの多くの操作を簡単に実行できます。

Java Collection フレームワークは、いくつかのインターフェイスとクラスを提供します。インターフェースには以下が含まれます セット、 リスト 、キュー、デキュー 、クラスには以下が含まれます 配列リストベクターリンクリストハッシュセットツリーセット 、LinkedHashSet 、 そして 優先キュー

なぜJavaでマーカーインターフェースを使うのか

このセクションでは、 収集フレームワーク 、つまり List と ArrayList です。 List はインターフェイスであり、ArrayList はクラスです。

リストと配列リストの違い

リストインターフェイス

List は、オブジェクトの順序付けされたコレクションを維持できるようにする Collection フレームワークの子インターフェイスです。 List を使用して、重複した値と null 要素を保存できます。これは、オブジェクトに対して挿入、削除、検索、更新操作を実行するためのインデックスベースのメソッドを提供します。

List インターフェイスは java.util パッケージ内で行われます。 ArrayList、LinkedList、Stack、および Vector クラスを実装します。これは ListIterator クラスのベースでもあり、これを使用して List を順方向および逆方向に反復できます。

リスト インターフェイスは、要素の位置アクセスと挿入を提供し、挿入順序を保持します。 List のインスタンスは、実装クラスを使用して作成できます。

リストの実装:

ArrayList、LinkedList、Vector を使用して List インターフェイスを実装できます。 スタッククラス

List インターフェイスをインスタンス化するには、次の構文を使用できます。

 List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack(); 

以下のリストの例を考えてみましょう。

 import java.util.*; public class JavaListExample { public static void main(String[] args) { List l = new ArrayList(); //Implementation of List l using ArrayList class l.add('Hello'); //adding objects l.add('Java'); l.add('Tpoint'); System.out.println(l); } } 

出力:

junit テストケース
 [Hello, Java, Tpoint] 

ArrayList クラス

ArrayList クラスは、要素を格納するために動的配列を使用します。 ArrayList クラスは配列のように機能しますが、サイズ制限はありません。いつでも必要に応じて要素を追加または削除できます。 ArrayList クラスを使用して重複した要素を保存できます。挿入順序を内部で管理します。

ArrayList クラスは、従来の配列よりもはるかに柔軟です。 List インターフェイスのすべてのメソッドを使用するために List インターフェイスを実装します。で開催されます ジャワ .util パッケージ。

ArrayList クラスは AbstractList クラスを継承し、List インターフェイスを実装します。その要素にはランダムにアクセスできます。 int、char などのプリミティブ型には使用できません。これらのデータ型の場合は、ラッパー クラスが必要です。

ArrayList の実装:

ArrayList クラスは、AbstractList クラスのすべてのメソッドを継承し、List インターフェイスを実装します。

ArrayList クラスは次のように宣言できます。

 public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable 

ArrayList は次のように定義できます。

 ArrayList myList = new ArrayList(); 

以下の ArrayList の例を考えてみましょう。

 import java.util.*; public class JavaAL { public static void main(String[] args) { ArrayList l = new ArrayList(); //implementation of ArrayList l.add('Hello'); //adding objects l.add('Java'); l.add('Tpoint'); System.out.println(l); } } 

出力:

 [Hello, Java, Tpoint] 

List インターフェイスと ArrayList クラスの主な違い

List と ArrayList の主な違いは次のとおりです。

  • 大きな違いの 1 つは、 List はインターフェイスであり、ArrayList はクラスです Java コレクション フレームワークの。
  • リストは収集フレームワークを拡張します 、比較的 ArrayList は AbstractList クラスを拡張し、List インターフェイスを実装します。
  • List と ArrayList の名前空間は、それぞれ System.Collection.Generic と System Collection です。
  • List は要素をシーケンス内に格納し、個々のインデックス番号によって識別されます。比較すると、ArrayList は要素を動的配列に格納します。必要に応じて成長することができます。

リストを次のように定義すると:

 List myList = new ArrayList(); 

つまり、メソッドと参照メンバーは List インターフェイスからのみ呼び出すことができます。

ArrayList を次のように定義するとします。

Javaの回文
 ArrayList myList = new ArrayList(); 

これは、ArrayList で利用可能なメソッドを呼び出し、List に加えてそのメンバーを使用できることを意味します。

List と ArrayList のヘッド比較については、次の表を検討してください。

比較の基準 リスト 配列リスト
一般的な それはインターフェースです。 授業です。
仕事 個々のインデックス番号によってアクセスできるオブジェクトのリストを作成します。 必要に応じて拡張できる動的配列を作成します。
実装 リスト list1= 新しい ArrayList(); ArrayList myList = new ArrayList();
拡張/実装 コレクションの枠組みを拡張します。 AbstractList クラスを拡張し、List インターフェイスを実装します。
基本パッケージ java.util java.util
名前空間 System.Collection.Generic システム.コレクション
パフォーマンス これにより、オブジェクトの操作が高速化されます。 List に比べてオブジェクトの操作が遅くなります。
インスタンス化 インスタンス化することはできません。 インスタンス化できる

結論

List はインターフェイスであり、ArrayList は Java Collection フレームワークのクラスです。 List は静的配列を作成し、ArrayList はオブジェクトを格納するための動的配列を作成します。したがって、List を作成した後は展開することはできませんが、ArrayList を使用すると、必要に応じて配列を展開できます。

ポリモーフィズムを利用したい場合は、List インターフェイスを使用することをお勧めします。将来、インターフェースを実装する必要が生じた場合でも、プログラムを変更する必要はありません。