logo

Conversió ArrayList a Array en Java: mètodes toArray().

Es poden utilitzar els mètodes següents per convertir ArrayList a Array:

arraylist-to-array

Mètode 1: utilitzant el mètode Object[] toArray().



Sintaxi:

 public Object[] toArray()>
  • L'especifica toArray a la col·lecció d'interfícies i a la llista d'interfícies
  • Substitueix toArray a la classe AbstractCollection
  • Retorna una matriu que conté tots els elements d'aquesta llista en l'ordre correcte.

Java




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

Característiques de java8

>

>

Sortida

10 20 30 40>

Nota: el mètode toArray() retorna una matriu de tipus Object(Object[]). Hem d'enregistrar-lo a Integer abans d'utilitzar-lo com a objectes Integer. Si no escrivim, obtenim un error de compilació.

Considereu l'exemple següent:

Java




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

>

awt java

>

Sortida:

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

Per tant, es recomana crear una matriu en la qual s'han d'emmagatzemar elements de List i passar-la com a argument al mètode toArray() per emmagatzemar elements si és prou gran. En cas contrari, s'assigna una nova matriu del mateix tipus per a aquest propòsit.

Mètode 2: utilitzant 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)>

Tingueu en compte que hi ha un paràmetre de matriu i un valor de retorn de matriu. L'objectiu principal de la matriu passat és indicar el tipus de matriu. La matriu retornada és del mateix tipus que la matriu passat.

  • Si la matriu passat té prou espai, els elements s'emmagatzemen en aquesta matriu.
  • Si la matriu passat no té prou espai, es crea una nova matriu amb el mateix tipus i mida de la llista donada.
  • Si la matriu que s'ha passat té més espai, la matriu s'omple primer amb elements de la llista i després s'omplen els valors nuls.

Llança ArrayStoreException si el tipus d'execució de a no és un supertipus del tipus d'execució de cada element d'aquesta llista.

Java




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

>

>

Sortida

10 20 30 40>

Nota: si la matriu especificada és nul·la, llançarà NullpointerException. Vegeu això per exemple.

Mètode 3: mètode manual per convertir ArrayList mitjançant el mètode get().

Podem utilitzar aquest mètode si no volem utilitzar java en el mètode toArray() integrat. Aquest és un mètode manual per copiar tots els elements ArrayList a String Array[].

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

Java




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

>

>

Sortida

10 20 30 40>

Mètode 4: Ús de l'API de fluxos de col·leccions a Java 8 per convertir a matriu de tipus int primitiu

Podem utilitzar aquest mètode streams() de list i mapToInt() per convertir ArrayList a matriu de tipus de dades primitius int

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

Java




índex de java

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

>

>

Sortida

10 20 30 40>