logo

Java 配列リスト

Java ArrayList クラス階層

ジャワ 配列リスト クラスは 動的 配列 要素を保存するため。配列のようなものですが、 サイズ制限なし 。要素はいつでも追加または削除できます。したがって、従来の配列よりもはるかに柔軟です。それは、 java.util パッケージ。 C++ のベクトルのようなものです。

Java の ArrayList には重複した要素を含めることもできます。これは List インターフェイスを実装しているので、ここで List インターフェイスのすべてのメソッドを使用できます。 ArrayList は挿入順序を内部的に維持します。

AbstractList クラスを継承して実装します。 リストインターフェース

Java ArrayList クラスに関する重要な点は次のとおりです。

  • Java ArrayList クラスには重複した要素を含めることができます。
  • Java ArrayList クラスは挿入順序を維持します。
  • Java ArrayList クラスは非 同期した
  • Java ArrayList では、配列がインデックスに基づいて動作するため、ランダム アクセスが可能になります。
  • ArrayList では、配列リストから要素が削除された場合に多くのシフトが発生する必要があるため、操作は Java の LinkedList よりも少し遅くなります。
  • int、float、char などのプリミティブ型の配列リストを作成することはできません。そのような場合は、必要なラッパー クラスを使用する必要があります。例えば:
 ArrayList al = ArrayList(); // does not work ArrayList al = new ArrayList(); // works fine 
  • Java ArrayList はサイズによって初期化されます。サイズは配列リスト内で動的であり、リストに追加またはリストから削除される要素に応じて変化します。

ArrayListクラスの階層

上の図に示すように、Java ArrayList クラスは、List インターフェイスを実装する AbstractList クラスを拡張します。 List インターフェイスは、 コレクション 階層順の Iterable インターフェイス。

ArrayList クラス宣言

java.util.ArrayList クラスの宣言を見てみましょう。

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

ArrayList のコンストラクター

コンストラクタ 説明
配列リスト() 空の配列リストを構築するために使用されます。
ArrayList(コレクションc) これは、コレクション c の要素で初期化される配列リストを構築するために使用されます。
ArrayList(int 容量) これは、指定された初期容量を持つ配列リストを構築するために使用されます。

ArrayList のメソッド

方法 説明
空所 追加 (int インデックス、E 要素) 指定された要素をリスト内の指定された位置に挿入するために使用されます。
ブール値 追加 (そしてそして) 指定された要素をリストの末尾に追加するために使用されます。
ブール値 addAll (コレクション c) これは、指定されたコレクション内のすべての要素を、指定されたコレクションのイテレータによって返される順序でこのリストの末尾に追加するために使用されます。
boolean addAll (int インデックス、コレクション c) これは、リストの指定された位置から開始して、指定されたコレクション内のすべての要素を追加するために使用されます。
ボイドクリア() このリストからすべての要素を削除するために使用されます。
void ensureCapacity(int requiredCapacity) これは、ArrayList インスタンスの容量を拡張するために使用されます。
E get(int インデックス) リストの特定の位置から要素をフェッチするために使用されます。
ブール値 isEmpty() リストが空の場合は true を返し、それ以外の場合は false を返します。
イテレータ()
listIterator()
int lastIndexOf(オブジェクト o) このリスト内で指定された要素が最後に出現したインデックスを返すために使用されます。リストにこの要素が含まれていない場合は -1 を返します。
オブジェクト[] toArray() このリスト内のすべての要素を正しい順序で含む配列を返すために使用されます。
T[] toArray(T[] a) このリスト内のすべての要素を正しい順序で含む配列を返すために使用されます。
オブジェクトクローン() ArrayList の浅いコピーを返すために使用されます。
ブール値には (オブジェクト o) が含まれます リストに指定された要素が含まれている場合は true を返します。
intindexOf(オブジェクトo) このリスト内で指定された要素が最初に出現するインデックスを返すために使用されます。リストにこの要素が含まれていない場合は -1 を返します。
E 削除(int インデックス) リスト内の指定された位置に存在する要素を削除するために使用されます。
ブール値の削除 (オブジェクト o) これは、指定された要素の最初の出現を削除するために使用されます。
ブール値 RemoveAll (コレクション c) リストからすべての要素を削除するために使用されます。
ブール値のremoveIf(述語フィルター) これは、指定された述語を満たすリストからすべての要素を削除するために使用されます。
protected void RemoveRange (int fromIndex, int toIndex) 指定された範囲内にあるすべての要素を削除するために使用されます。
void replaceAll(UnaryOperator 演算子) リストのすべての要素を指定された要素に置き換えるのに使用されます。
void keepAll (コレクション c) これは、指定されたコレクションに存在するリスト内のすべての要素を保持するために使用されます。
E set(int インデックス, E 要素) これは、リスト内の指定された位置に存在する指定された要素を置換するために使用されます。
void sort(コンパレータ c) 指定されたコンパレータに基づいてリストの要素を並べ替えるのに使用されます。
スプリッテレータ spliterator() これは、リスト内の要素に対するスプリッテレータを作成するために使用されます。
リスト subList(int fromIndex, int toIndex) これは、指定された範囲内にあるすべての要素をフェッチするために使用されます。
int サイズ() リスト内に存在する要素の数を返すために使用されます。
void トリムToSize() これは、この ArrayList インスタンスの容量をリストの現在のサイズになるようにトリミングするために使用されます。

Java 非ジェネリック vs.汎用コレクション

Java コレクション フレームワークは、JDK 1.5 より前は非汎用でした。 1.5 以降は汎用になっています。

Java の新しい汎用コレクションでは、コレクション内に 1 種類のオブジェクトのみを含めることができます。現在はタイプセーフなので、実行時に型キャストは必要ありません。

Java コレクションを作成する古い非汎用的な例を見てみましょう。

 ArrayList list=new ArrayList();//creating old non-generic arraylist 

Java コレクションを作成する新しい一般的な例を見てみましょう。

 ArrayList list=new ArrayList();//creating new generic arraylist 

汎用コレクションでは、山括弧で型を指定します。これで、ArrayList には、指定されたタイプのオブジェクトのみが強制的に含まれるようになります。別のタイプのオブジェクトを追加しようとすると、 コンパイル時エラー

Java ジェネリックの詳細については、ここをクリックしてください。 Java ジェネリックのチュートリアル

Java ArrayList の例

ファイル名: ArrayListExample1.java

 import java.util.*; public class ArrayListExample1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Printing the arraylist object System.out.println(list); } } 
今すぐテストしてください

出力:

[Mango, Apple, Banana, Grapes] 

Iterator を使用した ArrayList の反復

Iterator インターフェイスを使用して ArrayList 要素を走査する例を見てみましょう。

ファイル名: ArrayListExample2.java

 import java.util.*; public class ArrayListExample2{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Traversing list through Iterator Iterator itr=list.iterator();//getting the Iterator while(itr.hasNext()){//check if iterator has the elements System.out.println(itr.next());//printing the element and move to next } } } 
今すぐテストしてください

出力:

Mango Apple Banana Grapes 

For-each ループを使用した ArrayList の反復

for-each ループを使用して ArrayList 要素を走査する例を見てみましょう。

ファイル名: ArrayListExample3.java

 import java.util.*; public class ArrayListExample3{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Traversing list through for-each loop for(String fruit:list) System.out.println(fruit); } } 

出力:

今すぐテストしてください
Mango Apple Banana Grapes 

ArrayList の取得と設定

get() メソッド は指定されたインデックスにある要素を返しますが、 set() メソッド 要素を変更します。

ファイル名: ArrayListExample4.java

 import java.util.*; public class ArrayListExample4{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add('Mango'); al.add('Apple'); al.add('Banana'); al.add('Grapes'); //accessing the element System.out.println('Returning element: '+al.get(1));//it will return the 2nd element, because index starts from 0 //changing the element al.set(1,'Dates'); //Traversing list for(String fruit:al) System.out.println(fruit); } } 
今すぐテストしてください

出力:

Returning element: Apple Mango Dates Banana Grapes 

ArrayList をソートする方法

java.util パッケージはユーティリティ クラスを提供します コレクション 、静的メソッドsort()があります。を使用して、 コレクション.sort() メソッドを使用すると、ArrayList を簡単に並べ替えることができます。

ファイル名: ソート配列リスト.java

 import java.util.*; class SortArrayList{ public static void main(String args[]){ //Creating a list of fruits List list1=new ArrayList(); list1.add('Mango'); list1.add('Apple'); list1.add('Banana'); list1.add('Grapes'); //Sorting the list Collections.sort(list1); //Traversing list through the for-each loop for(String fruit:list1) System.out.println(fruit); System.out.println('Sorting numbers...'); //Creating a list of numbers List list2=new ArrayList(); list2.add(21); list2.add(11); list2.add(51); list2.add(1); //Sorting the list Collections.sort(list2); //Traversing list through the for-each loop for(Integer number:list2) System.out.println(number); } } 

出力:

Apple Banana Grapes Mango Sorting numbers... 1 11 21 51 

Java でコレクションの要素を反復する方法

コレクション要素をトラバースするにはさまざまな方法があります。

  1. Iterator インターフェイスによる。
  2. for-each ループによって。
  3. ListIterator インターフェイスによる。
  4. for ループにより。
  5. forEach() メソッドによる。
  6. forEachRemaining() メソッドによる。

残りの方法でコレクションを反復する

他の方法で ArrayList 要素を走査する例を見てみましょう

ファイル名: ArrayList4.java

 import java.util.*; class ArrayList4{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add(&apos;Ravi&apos;);//Adding object in arraylist list.add(&apos;Vijay&apos;); list.add(&apos;Ravi&apos;); list.add(&apos;Ajay&apos;); System.out.println(&apos;Traversing list through List Iterator:&apos;); //Here, element iterates in reverse order ListIterator list1=list.listIterator(list.size()); while(list1.hasPrevious()) { String str=list1.previous(); System.out.println(str); } System.out.println(&apos;Traversing list through for loop:&apos;); for(int i=0;i<list.size();i++) { system.out.println(list.get(i)); } system.out.println('traversing list through foreach() method:'); the method is a new feature, introduced in java 8. list.foreach(a->{ //Here, we are using lambda expression System.out.println(a); }); System.out.println(&apos;Traversing list through forEachRemaining() method:&apos;); Iterator itr=list.iterator(); itr.forEachRemaining(a-&gt; //Here, we are using lambda expression { System.out.println(a); }); } } </list.size();i++)>

出力:

Traversing list through List Iterator: Ajay Ravi Vijay Ravi Traversing list through for loop: Ravi Vijay Ravi Ajay Traversing list through forEach() method: Ravi Vijay Ravi Ajay Traversing list through forEachRemaining() method: Ravi Vijay Ravi Ajay 

Java ArrayList のユーザー定義クラス オブジェクト

Student クラス オブジェクトを配列リストに格納する例を見てみましょう。

ファイル名: ArrayList5.java

 class Student{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } } 

 import java.util.*; class ArrayList5{ public static void main(String args[]){ //Creating user-defined class objects Student s1=new Student(101,&apos;Sonoo&apos;,23); Student s2=new Student(102,&apos;Ravi&apos;,21); Student s2=new Student(103,&apos;Hanumat&apos;,25); //creating arraylist ArrayList al=new ArrayList(); al.add(s1);//adding Student class object al.add(s2); al.add(s3); //Getting Iterator Iterator itr=al.iterator(); //traversing elements of ArrayList object while(itr.hasNext()){ Student st=(Student)itr.next(); System.out.println(st.rollno+&apos; &apos;+st.name+&apos; &apos;+st.age); } } } 

出力:

 101 Sonoo 23 102 Ravi 21 103 Hanumat 25 

Java ArrayList のシリアル化と逆シリアル化の例

ArrayList オブジェクトをシリアル化してから逆シリアル化する例を見てみましょう。

ファイル名: ArrayList6.java

 import java.io.*; import java.util.*; class ArrayList6 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); try { //Serialization FileOutputStream fos=new FileOutputStream(&apos;file&apos;); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(al); fos.close(); oos.close(); //Deserialization FileInputStream fis=new FileInputStream(&apos;file&apos;); ObjectInputStream ois=new ObjectInputStream(fis); ArrayList list=(ArrayList)ois.readObject(); System.out.println(list); }catch(Exception e) { System.out.println(e); } } } 

出力:

 [Ravi, Vijay, Ajay] 

要素を追加する Java ArrayList の例

ここでは、要素を追加するさまざまな方法を見ていきます。

ファイル名: ArrayList7.java

 import java.util.*; class ArrayList7{ public static void main(String args[]){ ArrayList al=new ArrayList(); System.out.println(&apos;Initial list of elements: &apos;+al); //Adding elements to the end of the list al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); System.out.println(&apos;After invoking add(E e) method: &apos;+al); //Adding an element at the specific position al.add(1, &apos;Gaurav&apos;); System.out.println(&apos;After invoking add(int index, E element) method: &apos;+al); ArrayList al2=new ArrayList(); al2.add(&apos;Sonoo&apos;); al2.add(&apos;Hanumat&apos;); //Adding second list elements to the first list al.addAll(al2); System.out.println(&apos;After invoking addAll(Collection c) method: &apos;+al); ArrayList al3=new ArrayList(); al3.add(&apos;John&apos;); al3.add(&apos;Rahul&apos;); //Adding second list elements to the first list at specific position al.addAll(1, al3); System.out.println(&apos;After invoking addAll(int index, Collection c) method: &apos;+al); } } 

出力:

Initial list of elements: [] After invoking add(E e) method: [Ravi, Vijay, Ajay] After invoking add(int index, E element) method: [Ravi, Gaurav, Vijay, Ajay] After invoking addAll(Collection c) method: [Ravi, Gaurav, Vijay, Ajay, Sonoo, Hanumat] After invoking addAll(int index, Collection c) method: [Ravi, John, Rahul, Gaurav, Vijay, Ajay, Sonoo, Hanumat] 

要素を削除する Java ArrayList の例

ここでは、要素を削除するさまざまな方法を見ていきます。

ファイル名: ArrayList8.java

 import java.util.*; class ArrayList8 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); al.add(&apos;Anuj&apos;); al.add(&apos;Gaurav&apos;); System.out.println(&apos;An initial list of elements: &apos;+al); //Removing specific element from arraylist al.remove(&apos;Vijay&apos;); System.out.println(&apos;After invoking remove(object) method: &apos;+al); //Removing element on the basis of specific position al.remove(0); System.out.println(&apos;After invoking remove(index) method: &apos;+al); //Creating another arraylist ArrayList al2=new ArrayList(); al2.add(&apos;Ravi&apos;); al2.add(&apos;Hanumat&apos;); //Adding new elements to arraylist al.addAll(al2); System.out.println(&apos;Updated list : &apos;+al); //Removing all the new elements from arraylist al.removeAll(al2); System.out.println(&apos;After invoking removeAll() method: &apos;+al); //Removing elements on the basis of specified condition al.removeIf(str -&gt; str.contains(&apos;Ajay&apos;)); //Here, we are using Lambda expression System.out.println(&apos;After invoking removeIf() method: &apos;+al); //Removing all the elements available in the list al.clear(); System.out.println(&apos;After invoking clear() method: &apos;+al); } } 

出力:

An initial list of elements: [Ravi, Vijay, Ajay, Anuj, Gaurav] After invoking remove(object) method: [Ravi, Ajay, Anuj, Gaurav] After invoking remove(index) method: [Ajay, Anuj, Gaurav] Updated list : [Ajay, Anuj, Gaurav, Ravi, Hanumat] After invoking removeAll() method: [Ajay, Anuj, Gaurav] After invoking removeIf() method: [Anuj, Gaurav] After invoking clear() method: [] 

Java ArrayList の restartAll() メソッドの例

ファイル名: ArrayList9.java

 import java.util.*; class ArrayList9{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); ArrayList al2=new ArrayList(); al2.add(&apos;Ravi&apos;); al2.add(&apos;Hanumat&apos;); al.retainAll(al2); System.out.println(&apos;iterating the elements after retaining the elements of al2&apos;); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

出力:

 iterating the elements after retaining the elements of al2 Ravi 

Java ArrayList の isEmpty() メソッドの例

ファイル名: ArrayList4.java

 import java.util.*; class ArrayList10{ public static void main(String [] args) { ArrayList al=new ArrayList(); System.out.println(&apos;Is ArrayList Empty: &apos;+al.isEmpty()); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); System.out.println(&apos;After Insertion&apos;); System.out.println(&apos;Is ArrayList Empty: &apos;+al.isEmpty()); } } 

出力:

Is ArrayList Empty: true After Insertion Is ArrayList Empty: false 

Java ArrayList の例: 書籍

リストに書籍を追加し、すべての書籍を印刷する ArrayList の例を見てみましょう。

ファイル名: ArrayListExample20.java

 import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class ArrayListExample20 { public static void main(String[] args) { //Creating list of Books List list=new ArrayList(); //Creating Books Book b1=new Book(101,&apos;Let us C&apos;,&apos;Yashwant Kanetkar&apos;,&apos;BPB&apos;,8); Book b2=new Book(102,&apos;Data Communications and Networking&apos;,&apos;Forouzan&apos;,&apos;Mc Graw Hill&apos;,4); Book b3=new Book(103,&apos;Operating System&apos;,&apos;Galvin&apos;,&apos;Wiley&apos;,6); //Adding Books to list list.add(b1); list.add(b2); list.add(b3); //Traversing list for(Book b:list){ System.out.println(b.id+&apos; &apos;+b.name+&apos; &apos;+b.author+&apos; &apos;+b.publisher+&apos; &apos;+b.quantity); } } } 
今すぐテストしてください

出力:

101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications and Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6 

ArrayList のサイズと容量

配列リストのサイズと容量は、初心者にとって混乱を招く 2 つの用語です。このセクションでは、いくつかの例を使用してそれを理解しましょう。次のコード スニペットを考えてみましょう。

ファイル名: サイズ容量.java

 import java.util.*; public class SizeCapacity { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(); System.out.println(&apos;The size of the array is: &apos; + al.size()); } } 

出力:

 The size of the array is: 0 

説明: 配列リストに対して何も行っていないため、出力は意味を成します。次に、次のプログラムを観察してください。

ファイル名: SizeCapacity1.java

 import java.util.*; public class SizeCapacity1 { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(10); System.out.println(&apos;The size of the array is: &apos; + al.size()); } } 

出力:

 The size of the array is: 0 

説明: サイズがまだ 0 であることがわかりますが、この背後にある理由は、数字 10 がサイズではなく容量を表しているためです。実際、サイズは配列内に存在する要素の合計数を表します。したがって、要素を追加していないため、どちらのプログラムでも配列リストのサイズはゼロです。

容量は、配列リストに含めることができる要素の合計数を表します。したがって、配列リストの容量は常に配列リストのサイズ以上になります。配列リストに要素を追加すると、配列リストのサイズが容量と同じになったかどうかがチェックされます。 「はい」の場合、配列リストの容量が増加します。したがって、上記の例では、リストに 10 個の要素が追加されるまで、容量は 10 になります。 11を足すと番目要素により容量が増加します。どちらの例でも、配列リストの容量は 10 であることに注意してください。最初のケースでは、配列リストのデフォルトの容量が 10 であるため、容量は 10 です。2 番目のケースでは、配列の容量が 10 であることを明示的に述べています。リストは10です。

注: アレイ リストの容量がどのように増加するかを知るための標準的な方法はありません。実際、容量の増加方法は GDK のバージョンごとに異なります。したがって、容量を増やすコードが GDK にどのように実装されているかを確認する必要があります。 ArrayList クラスには、配列リストの容量を返す事前定義されたメソッドはありません。したがって、よりよく理解するには、Vector クラスの Capacity() メソッドを使用してください。サイズと容量の論理はArrayListクラスとVectorクラスで同じです。

関連トピック

Java で ArrayList をソートする方法

配列と配列リストの違い

Java で ArrayList と LinkedList を使用する場合

ArrayList と LinkedList の違い

重要

ArrayList と Vector の違い

Java で 2 つの ArrayList を比較する方法

JavaでArrayListを逆にする方法

Java で ArrayList と LinkedList を使用する場合

ArrayList を読み取り専用にする方法

JavaのArrayListの配列の長さとsize()の違い

Java で ArrayList を同期する方法

JavaでArrayListをArrayに変換し、ArrayをArrayListに変換する方法

Java における配列と ArrayList

Java ArrayList を降順に並べ替える方法

Java で ArrayList から重複を削除する方法