ArrayList を Array に変換するには、次のメソッドを使用できます。

方法 1: Object[] toArray() メソッドを使用する
構文:
public Object[] toArray()>
- これは、Collection インターフェイスおよび List インターフェイスの toArray によって指定されます。
- クラス AbstractCollection の toArray をオーバーライドします。
- このリスト内のすべての要素を正しい順序で含む配列を返します。
ジャワ
// Java program to demonstrate working of> // Objectp[] toArray()> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> >public> static> void> main(String[] args)> >{> >List al =>new> ArrayList();> >al.add(>10>);> >al.add(>20>);> >al.add(>30>);> >al.add(>40>);> >Object[] objects = al.toArray();> >// Printing array of objects> >for> (Object obj : objects)> >System.out.print(obj +>' '>);> >}> }> |
Javaの階乗
>
>出力
10 20 30 40>
注: toArray() メソッドは、Object(Object[]) 型の配列を返します。 Integer オブジェクトとして使用する前に、Integer に型キャストする必要があります。型キャストしないとコンパイル エラーが発生します。
次の例を考えてみましょう。
ジャワ
// A Java program to demonstrate that assigning Objects[]> // to Integer[] causes error.> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> >public> static> void> main(String[] args)> >{> >List al =>new> ArrayList();> >al.add(>10>);> >al.add(>20>);> >al.add(>30>);> >al.add(>40>);> >// Error: incompatible types: Object[]> >// cannot be converted to Integer[]> >Integer[] objects = al.toArray();> >for> (Integer obj : objects)> >System.out.println(obj);> >}> }> |
>
>
出力:
19: error: incompatible types: Object[] cannot be converted to Integer[] Integer[] objects = al.toArray(); ^ 1 error>
したがって、List の要素を格納する必要がある配列を作成し、十分な大きさであればそれを toArray() メソッドの引数として渡して要素を格納することをお勧めします。それ以外の場合は、同じタイプの新しい配列がこの目的のために割り当てられます。
方法 2: T[] toArray(T[] a) を使用する
jframe
// Converts a list into an array arr[] and returns same. // If arr[] is not big enough, then a new array of same // type is allocated for this purpose. // T represents generic . public T[] toArray(T[] arr)>
配列パラメータと配列戻り値があることに注意してください。渡された配列の主な目的は、配列の型を伝えることです。返される配列は、渡された配列と同じ型です。
- 渡された配列に十分なスペースがある場合、要素はこの配列自体に格納されます。
- 渡された配列に十分なスペースがない場合は、指定されたリストと同じ型とサイズで新しい配列が作成されます。
- 渡された配列にさらに多くのスペースがある場合、配列にはまずリスト要素が埋められ、次に null 値が埋められます。
a のランタイム型が、このリスト内のすべての要素のランタイム型のスーパータイプではない場合、ArrayStoreException がスローされます。
ジャワ
// A Java program to convert an ArrayList to arr[]> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> >public> static> void> main(String[] args)> >{> >List al =>new> ArrayList();> >al.add(>10>);> >al.add(>20>);> >al.add(>30>);> >al.add(>40>);> >Integer[] arr =>new> Integer[al.size()];> >arr = al.toArray(arr);> >for> (Integer x : arr)> >System.out.print(x +>' '>);> >}> }> |
>
>出力
10 20 30 40>
注: 指定された配列が null の場合、NullpointerException がスローされます。たとえば、これを参照してください。
方法 3: get() メソッドを使用して ArrayList を手動で変換する方法
ビルドされた toArray() メソッドで Java を使用したくない場合は、このメソッドを使用できます。これは、すべての ArrayList 要素を String Array[] にコピーする手動の方法です。
// Returns the element at the specified index in the list. public E get(int index)>
ジャワ
// Java program to convert a ArrayList to an array> // using get() in a loop.> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> >public> static> void> main(String[] args)> >{> >List al =>new> ArrayList();> >al.add(>10>);> >al.add(>20>);> >al.add(>30>);> >al.add(>40>);> >Integer[] arr =>new> Integer[al.size()];> >// ArrayList to Array Conversion> >for> (>int> i =>0>; i arr[i] = al.get(i); for (Integer x : arr) System.out.print(x + ' '); } }> |
>
時速100km
>出力
10 20 30 40>
方法 4: Java 8 のストリーム API を使用してコレクションをプリミティブ int 型の配列に変換する
このリストの streams() メソッドと mapToInt() を使用して、ArrayList をプリミティブ データ型 int の配列に変換できます。
int[] arr = list.stream().mapToInt(i ->i).toArray();>>'ジャワ
// Java program to convert a ArrayList to an array> // using streams()> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> >public> static> void> main(String[] args)> >{> >List al =>new> ArrayList();> >al.add(>10>);> >al.add(>20>);> >al.add(>30>);> >al.add(>40>);> >// ArrayList to Array Conversion> >int>[] arr = al.stream().mapToInt(i ->i).toArray();>>' (>int> x : arr)> >System.out.print(x +>' '>);> >}> }> |
>出力
10 20 30 40>