¿Cómo se convierte int[]
en List<Integer>
en Java?
Por supuesto, estoy interesado en cualquier otra respuesta que no sea hacerlo en un bucle, elemento por elemento. Pero si no hay otra respuesta, elegiré esa como la mejor para mostrar el hecho de que esta funcionalidad no es parte de Java.
java
arrays
collections
boxing
autoboxing
pupeno
fuente
fuente
Respuestas:
No hay un atajo para convertir de
int[]
aList<Integer>
yaArrays.asList
que no se ocupa del boxeo y solo creará unoList<int[]>
que no es lo que desea. Tienes que hacer un método de utilidad.fuente
new ArrayList<Integer>() {{ for (int i : ints) add(i); }}
Corrientes
En Java 8 puedes hacer esto
fuente
También de las bibliotecas de guayaba ... com.google.common.primitives.Ints:
fuente
Arrays.asList no funcionará como algunas de las otras respuestas esperan.
Este código no creará una lista de 10 enteros. Imprimirá 1 , no 10 :
Esto creará una lista de enteros:
Si ya tiene la matriz de entradas, no hay una forma rápida de convertir, es mejor que tenga el ciclo.
Por otro lado, si su matriz tiene Objetos, no primitivos, Arrays.asList funcionará:
fuente
Agregaré otra respuesta con un método diferente; sin bucle, sino una clase anónima que utilizará las características de autoboxing:
fuente
set
método y ahora incluso puedo ordenar la matriz ...El fragmento de código más pequeño sería:
donde ArrayUtils proviene de commons-lang :)
fuente
ArrayUtils
en cuenta que es una biblioteca relativamente grande para una aplicación de AndroidArrayUtils.toPrimitive(...)
es la clave.En Java 8 con transmisión:
o con coleccionistas
fuente
En Java 8:
fuente
Si está utilizando Java 8, podemos utilizar la API de transmisión para convertirlo en una lista.
También puede usar IntStream para convertir también.
Hay otras bibliotecas externas como guayaba y apache commons también disponibles para convertirlo.
salud.
fuente
También vale la pena revisar este informe de error , que se cerró con el motivo "No es un defecto" y el siguiente texto:
"El autoboxing de arreglos completos no es un comportamiento especificado, por una buena razón. Puede ser prohibitivamente costoso para arreglos grandes".
fuente
probar esta clase:
caso de prueba:
fuente
El mejor tiro:
Ejemplos:
fuente
Si está abierto a usar una biblioteca de terceros, esto funcionará en Eclipse Collections :
Nota: Soy un committer para Eclipse Collections .
fuente
fuente
¿Qué hay de esto?
int[] a = {1,2,3}; Integer[] b = ArrayUtils.toObject(a); List<Integer> c = Arrays.asList(b);
fuente
Aquí hay una solución:
Salida:
fuente
Aquí hay otra posibilidad, de nuevo con Java 8 Streams:
fuente
Aquí hay una forma genérica de convertir la matriz a ArrayList
Uso
fuente
ver esto
fuente