Conversione da ArrayList ad Array in Java: metodi toArray()

Conversione da ArrayList ad Array in Java: metodi toArray()

È possibile utilizzare i seguenti metodi per convertire ArrayList in Array:

arraylist-to-array

Metodo 1: utilizzo del metodo Object[] toArray()

Sintassi:

 public Object[] toArray() 
  • È specificato da toArray nella raccolta di interfacce e nell'elenco delle interfacce
  • Sostituisce toArray nella classe AbstractCollection
  • Restituisce un array contenente tutti gli elementi di questo elenco nell'ordine corretto.

Giava




// 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 +> ' '> );> > }> }>

Produzione

10 20 30 40 

Nota: il metodo toArray() restituisce un array di tipo Object(Object[]). Dobbiamo trasformarlo in Integer prima di utilizzarlo come oggetto Integer. Se non eseguiamo il typecast, otteniamo un errore di compilazione.

Considera il seguente esempio:

Giava




// 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);> > }> }>

Produzione:

19: error: incompatible types: Object[] cannot be converted to Integer[] Integer[] objects = al.toArray(); ^ 1 error 

Si consiglia quindi di creare un array in cui memorizzare gli elementi di List e passarlo come argomento nel metodo toArray() per memorizzare gli elementi se è abbastanza grande. Altrimenti a questo scopo viene allocato un nuovo array dello stesso tipo.

Metodo 2: utilizzo di T[] toArray(T[] a)

// 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) 

Tieni presente che esiste un parametro di array e un valore restituito dall'array. Lo scopo principale dell'array passato è indicare il tipo di array. L'array restituito è dello stesso tipo dell'array passato.

  • Se l'array passato dispone di spazio sufficiente, gli elementi vengono archiviati nell'array stesso.
  • Se l'array passato non dispone di spazio sufficiente, viene creato un nuovo array con lo stesso tipo e dimensione dell'elenco specificato.
  • Se l'array passato ha più spazio, l'array viene prima riempito con gli elementi dell'elenco, quindi vengono riempiti i valori null.

Genera ArrayStoreException se il tipo di runtime di a non è un supertipo del tipo di runtime di ogni elemento in questo elenco.

Giava




// 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 +> ' '> );> > }> }>

Produzione

10 20 30 40 

Nota: se l'array specificato è null, verrà lanciata NullpointerException. Vedi questo per esempio.

Metodo 3: metodo manuale per convertire ArrayList utilizzando il metodo get()

Possiamo usare questo metodo se non vogliamo usare Java nel metodo built toArray(). Questo è un metodo manuale per copiare tutti gli elementi ArrayList nello String Array[].

// Returns the element at the specified index in the list. public E get(int index) 

Giava




// 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 + ' '); } }>

Produzione

10 20 30 40 

Metodo 4: utilizzo dell'API dei flussi delle raccolte in Java 8 per la conversione in array di tipo int primitivo

Possiamo usare questo metodo streams() di list e mapToInt() per convertire ArrayList in un array di tipo dati primitivo int

int[] arr = list.stream().mapToInt(i ->i).toArray(); 

Giava




// 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 +> ' '> );> > }> }>

Produzione

10 20 30 40