¿Cómo puedo convertir una List en una Array en Java?
Verifique el código a continuación:
ArrayList<Tienda> tiendas; List<Tienda> tiendasList; tiendas = new ArrayList<Tienda>(); 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 llenar la matriz tiendas con los valores de tiendasList .
O:
Foo[] array = list.toArray(new Foo[0]);o:
Foo[] array = new Foo[list.size()]; list.toArray(array); // fill the arrayTenga en cuenta que esto solo funciona para matrices de tipos de referencia. Para arreglos de tipos primitivos, use la forma tradicional:
List<Integer> list = ...; int[] array = new int[list.size()]; for(int i = 0; i < list.size(); i++) array[i] = list.get(i); Se recomienda ahora usar list.toArray(new Foo[0]); , no list.toArray(new Foo[list.size()]); .
De la inspección de JetBrains Intellij Idea:
Hay dos estilos para convertir una colección en una matriz: ya sea usando una matriz de tamaño predeterminado (como c.toArray(new String[c.size()]) ) o usando una matriz vacía (como c.toArray(new String[ 0]) .
En versiones anteriores de Java, se recomendaba usar una matriz de tamaño predeterminado, ya que la llamada de reflexión necesaria para crear una matriz del tamaño adecuado era bastante lenta. Sin embargo, desde las actualizaciones tardías de OpenJDK 6, esta llamada se ha intrínseco, lo que hace que el rendimiento de la versión de matriz vacía sea el mismo y, a veces, incluso mejor, en comparación con la versión de tamaño predeterminado. Además, pasar una matriz de tamaño predeterminado es peligroso para una colección concurrente o sincronizada, ya que es posible una carrera de datos entre el tamaño y la llamada toArray , lo que puede generar valores nulos adicionales al final de la matriz, si la colección se redujo al mismo tiempo durante la operación.
Esta inspección permite seguir el estilo uniforme: ya sea utilizando una matriz vacía (que se recomienda en Java moderno) o utilizando una matriz de tamaño predeterminado (que podría ser más rápida en versiones anteriores de Java o JVM no basadas en HotSpot).
Una alternativa en Java 8:
String[] strings = list.stream().toArray(String[]::new);Desde Java 11:
String[] strings = list.toArray(String[]::new);Creo que esta es la forma más sencilla:
Foo[] array = list.toArray(new Foo[0]);