Convertir lista en matriz en Java [duplicado]

Resuelto colymore asked hace 12 años • 11 respuestas

¿ Cómo puedo convertir a Lista an Arrayen 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 tiendascon los valores de tiendasList.

colymore avatar Mar 06 '12 02:03 colymore
Aceptado

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

Eng.Fouad avatar Mar 05 '2012 19:03 Eng.Fouad

Una alternativa en Java 8:

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

Desde Java 11:

String[] strings = list.toArray(String[]::new);
Vitalii Fedorenko avatar Apr 20 '2014 16:04 Vitalii Fedorenko

Creo que esta es la forma más sencilla:

Foo[] array = list.toArray(new Foo[0]);
Fer avatar Jan 03 '2013 10:01 Fer