logo

Java での ArrayList から配列への変換 : toArray() メソッド

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();>>' for> (>int> x : arr)> >System.out.print(x +>' '>);> >}> }>

>

出力

10 20 30 40>