Si estas usando java-8 También hay otra forma de hacer esto.
int[] arr = list.stream().mapToInt(i -> i).toArray();
Lo que hace es:
- obteniendo un
Stream<Integer>
de la lista
- obtener un
IntStream
mapeo de cada elemento a sí mismo (función de identidad), desempaquetar el int
valor retenido por cada Integer
objeto (hecho automáticamente desde Java 5)
- obtener la matriz de
int
llamandotoArray
También puede llamar explícitamente a intValue
través de una referencia de método, es decir:
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
También vale la pena mencionar que podría obtener un NullPointerException
si tiene alguna null
referencia en la lista. Esto podría evitarse fácilmente agregando una condición de filtrado a la tubería de flujo de esta manera:
//.filter(Objects::nonNull) also works
int[] arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray();
Ejemplo:
List<Integer> list = Arrays.asList(1, 2, 3, 4);
int[] arr = list.stream().mapToInt(i -> i).toArray(); //[1, 2, 3, 4]
list.set(1, null); //[1, null, 3, 4]
arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray(); //[1, 3, 4]