Convertir lista en matriz en Java [duplicado]
¿ Cómo puedo convertir a List
a an 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 completar la matriz tiendas
con los valores de tiendasList
.
Cualquiera:
Foo[] array = list.toArray(new Foo[0]);
o:
Foo[] array = new Foo[list.size()];
list.toArray(array); // fill the array
Tenga en cuenta que esto sólo funciona para matrices de tipos de referencia. Para matrices de tipos primitivos, utilice 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);
Actualizar:
Se recomienda su uso ahora 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 utilizar 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 últimas actualizaciones de OpenJDK 6, esta llamada se intrinsificó, 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 predimensionada 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 resultar en nulos adicionales al final de la matriz, si la colección se redujo simultáneamente durante la operación.
Esta inspección permite seguir el estilo uniforme: ya sea usando una matriz vacía (que se recomienda en Java moderno) o usando una matriz predimensionada (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]);