¿Cómo convertir int[] en List<Integer> en Java?
¿ Cómo convierto int[]
a List<Integer>
Java?
Por supuesto, me interesa cualquier otra respuesta que no sea hacerlo en 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.
Corrientes
- En Java 8+ puedes hacer una transmisión de tu
int
matriz. Llame aArrays.stream
oIntStream.of
. - Llame
IntStream#boxed
para usar la conversión de boxeo deint
primitivo aInteger
objetos. - Recopile en una lista usando
Stream.collect( Collectors.toList() )
. O más simplemente en Java 16+, llame aStream#toList()
.
Ejemplo:
int[] ints = {1,2,3};
List<Integer> list = Arrays.stream(ints).boxed().collect(Collectors.toList());
En Java 16 y posteriores:
List<Integer> list = Arrays.stream(ints).boxed().toList();
No hay ningún atajo para convertir de int[]
a a List<Integer>
, ya que Arrays.asList
no se ocupa del boxeo y simplemente creará un archivo List<int[]>
que no es lo que desea. Tienes que hacer un método de utilidad.
int[] ints = {1, 2, 3};
List<Integer> intList = new ArrayList<Integer>(ints.length);
for (int i : ints)
{
intList.add(i);
}
También de bibliotecas de guayaba ... com.google.common.primitives.Ints:
List<Integer> Ints.asList(int...)
Arrays.asList no funcionará como esperan algunas de las otras respuestas.
Este código no creará una lista de 10 números enteros. Imprimirá 1 , no 10 :
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List lst = Arrays.asList(arr);
System.out.println(lst.size());
Esto creará una lista de números enteros:
List<Integer> lst = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Si ya tiene la matriz de entradas, no existe una forma rápida de convertir, es mejor que utilice el bucle.
Por otro lado, si su matriz tiene objetos, no primitivos, Arrays.asList funcionará:
String str[] = { "Homer", "Marge", "Bart", "Lisa", "Maggie" };
List<String> lst = Arrays.asList(str);
Agregaré otra respuesta con un método diferente; no hay bucle sino una clase anónima que utilizará las funciones de autoboxing:
public List<Integer> asList(final int[] is)
{
return new AbstractList<Integer>() {
public Integer get(int i) { return is[i]; }
public int size() { return is.length; }
};
}