Convertir lista en matriz en Java

¿Cómo puedo convertir una List a una Array en Java?

Verifica el código a continuación:

 ArrayList tiendas; List tiendasList; tiendas = new ArrayList(); Resources res = this.getBaseContext().getResources(); XMLParser saxparser = new XMLParser(marca,res); tiendasList = saxparser.parse(marca,res); tiendas = tiendasList.toArray(); this.adaptador = new adaptadorMarca(this, R.layout.filamarca, tiendas); setListAdapter(this.adaptador); 

Necesito poblar las tiendas la matriz con los valores de tiendasList .

Ya sea:

 Foo[] array = list.toArray(new Foo[list.size()]); 

o:

 Foo[] array = new Foo[list.size()]; list.toArray(array); // fill the array 

Tenga en cuenta que esto funciona solo para matrices de tipos de referencia. Para arreglos de tipos primitivos, use la forma tradicional:

 List list = ...; int[] array = new int[list.size()]; for(int i = 0; i < list.size(); i++) array[i] = list.get(i); 

Una alternativa en Java 8:

 String[] strings = list.stream().toArray(String[]::new); 

Creo que esta es la forma más simple:

 Foo[] array = list.toArray(new Foo[0]); 

Encontré este fragmento de código que lo resuelve.

 //Creating a sample ArrayList List list = new ArrayList(); //Adding some long type values list.add(100l); list.add(200l); list.add(300l); //Converting the ArrayList to a Long Long[] array = (Long[]) list.toArray(new Long[list.size()]); //Printing the results System.out.println(array[0] + " " + array[1] + " " + array[2]); 

La conversión funciona de la siguiente manera:

  1. Crea una nueva matriz larga, con el tamaño de la lista original
  2. Convierte el ArrayList original en una matriz utilizando el recién creado
  3. Echa esa matriz en una matriz larga (larga []), que apropiadamente llamé ‘matriz’

Para ArrayList, los siguientes trabajos:

 ArrayList list = new ArrayList(); //... add values Foo[] resultArray = new Foo[list.size()]; resultArray = list.toArray(resultArray); 

Ejemplo tomado de esta página: http://www.java-examples.com/copy-all-elements-java-arraylist-object-array-example

 import java.util.ArrayList; public class CopyElementsOfArrayListToArrayExample { public static void main(String[] args) { //create an ArrayList object ArrayList arrayList = new ArrayList(); //Add elements to ArrayList arrayList.add("1"); arrayList.add("2"); arrayList.add("3"); arrayList.add("4"); arrayList.add("5"); /* To copy all elements of java ArrayList object into array use Object[] toArray() method. */ Object[] objArray = arrayList.toArray(); //display contents of Object array System.out.println("ArrayList elements are copied into an Array. Now Array Contains.."); for(int index=0; index < objArray.length ; index++) System.out.println(objArray[index]); } } /* Output would be ArrayList elements are copied into an Array. Now Array Contains.. 1 2 3 4 5 

Esto es trabajos. Mas o menos.

 public static Object[] toArray(List< ?> a) { Object[] arr = new Object[a.size()]; for (int i = 0; i < a.size(); i++) arr[i] = a.get(i); return arr; } 

Entonces el método principal.

 public static void main(String[] args) { List list = new ArrayList() {{ add("hello"); add("world"); }}; Object[] arr = toArray(list); System.out.println(arr[0]); } 

Lo mejor que encontré sin Java 8 fue:

 public static  T[] toArray(List list, Class objectClass) { if (list == null) { return null; } T[] listAsArray = (T[]) Array.newInstance(objectClass, list.size()); list.toArray(listAsArray); return listAsArray; } 

Si alguien tiene una mejor manera de hacerlo, por favor comparte 🙂

Esta (la respuesta de Ondrej):

 Foo[] array = list.toArray(new Foo[0]); 

Es el modismo más común que veo Aquellos que están sugiriendo que use el tamaño real de la lista en lugar de “0” están entendiendo mal lo que está sucediendo aquí. A la llamada aArray no le importa el tamaño o el contenido de la matriz dada, solo necesita su tipo. Hubiera sido mejor si tomara un Tipo real en cuyo caso “Foo.class” hubiera sido mucho más claro. Sí, este modismo genera un objeto ficticio, pero incluir el tamaño de la lista solo significa que se genera un objeto ficticio más grande. De nuevo, el objeto no se usa de ninguna manera; es solo el tipo que se necesita.

Puede usar la aplicación apiArray () de la siguiente manera:

 ArrayList stringList = new ArrayList(); stringList.add("ListItem1"); stringList.add("ListItem2"); String[] stringArray = new String[stringList.size()]; stringArray = stringList.toArray(stringList); 

Los valores de la matriz son,

 for(String value : stringList) { System.out.println(value); } 
 tiendas = new ArrayList(tiendasList); 

Todas las implementaciones de colecciones tienen un constructor sobrecargado que toma otra colección (con la plantilla correspondiente). La instancia nueva se crea una instancia con la colección pasada.

Prueba esto:

 List list = new ArrayList(); list.add("Apple"); list.add("Banana"); Object[] ol = list.toArray();