Quiero saber si es seguro / recomendable convertir de ArrayList a Array. Tengo un archivo de texto con cada línea una cadena:
1236
1233
4566
4568
....
Quiero leerlos en una lista de matrices y luego la convierto a Matriz. ¿Es aconsejable / legal hacer eso?
Gracias
Respuestas:
Sí , es seguro convertir un archivo
ArrayList
en unArray
. Que sea una buena idea depende del uso previsto. ¿Necesitas las operaciones que teArrayList
brinda? Si es así, manténgalo en formatoArrayList
. ¡Si no, conviértase!salidas
fuente
The method toArray(T[]) in the type ArrayList<Character> is not applicable for the arguments (char[])
Esta es la mejor manera (en mi humilde opinión).
Este código también funciona:
Pero es menos efectivo: la matriz de cadenas se crea dos veces: la primera vez que se crea una matriz de longitud cero, luego se crea, completa y devuelve la matriz de tamaño real. Entonces, si ya conoce el tamaño necesario (de
list.size()
), debe crear una matriz que sea lo suficientemente grande como para colocar todos los elementos. En este caso, no se reasigna.fuente
new String[0]
ynew String[size]
new String[0]
es en realidad más eficiente. shipilev.net/blog/2016/arrays-wisdom-ancientsSi es una "buena idea" realmente dependerá de su caso de uso.
fuente
Object
asumiendo que v es una ArrayList:
fuente
Hay dos estilos para convertir una colección en una matriz: usando una matriz pre-dimensionada (como
c.toArray(new String[c.size()])
) o usando una matriz vacía (comoc.toArray(new String[0])
). En las versiones anteriores de Java, se recomendaba el uso de una matriz de tamaño predeterminado, ya que la llamada de reflexión que es necesaria para crear una matriz del tamaño adecuado era bastante lenta. Sin embargo, desde las últimas actualizaciones de OpenJDK 6, esta llamada estaba intrinsificada, 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 simultánea o sincronizada, ya que es posible una carrera de datos entre el tamaño y la llamada toArray, lo que puede dar como resultado nulos adicionales al final de la matriz, si la colección se redujo simultáneamente durante la operación. Puedes seguir el estilo uniforme:ya sea usando una matriz vacía (que se recomienda en Java moderno) o usando una matriz pre-dimensionada (que podría ser más rápida en versiones anteriores de Java o JVMs no basadas en HotSpot) .fuente
Este es el uso recomendado para Java más nuevo (> Java 6)
fuente
La interfaz Collection incluye el método toArray () para convertir una nueva colección en una matriz. Hay dos formas de este método. La versión sin argumento devolverá los elementos de la colección en una matriz de Objetos: public Object [] toArray (). La matriz devuelta no se puede convertir a ningún otro tipo de datos. Ésta es la versión más sencilla. La segunda versión requiere que pase el tipo de datos de la matriz que le gustaría devolver: public Object [] toArray (Object type []).
para referencia, consulte este enlace http://techno-terminal.blogspot.in/2015/11/how-to-obtain-array-from-arraylist.html
fuente
Un enfoque sería agregar el segundo bucle for donde la impresión se realiza dentro del primer bucle for. Me gusta esto:
fuente
Depende de lo que desee lograr si necesita manipular la matriz más adelante, costaría más esfuerzo que mantener la cadena en ArrayList. También tiene acceso aleatorio con un ArrayList por
list.get( index );
fuente