Parece un poco tarde, pero aquí están mis dos centavos. No podemos tener List<int>como intes un tipo primitivo, por lo que solo podemos tener List<Integer>.
Java 8 (int array)
int[] ints = new int[] {1,2,3,4,5};
List<Integer> list11 =Arrays.stream(ints).boxed().collect(Collectors.toList());
Java 8 y menos (matriz entera)
Integer[] integers = new Integer[] {1,2,3,4,5};
List<Integer> list21 = Arrays.asList(integers); // returns a fixed-size list backed by the specified array.
List<Integer> list22 = new ArrayList<>(Arrays.asList(integers)); // good
List<Integer> list23 = Arrays.stream(integers).collect(Collectors.toList()); //Java 8 only
¿Necesita ArrayList y no List?
En caso de que queramos una implementación específica de, Listpor ejemplo ArrayList, podemos usar toCollectioncomo:
ArrayList<Integer> list24 = Arrays.stream(integers)
.collect(Collectors.toCollection(ArrayList::new));
¿Por qué list21no se puede modificar estructuralmente?
Cuando usamos Arrays.asListel tamaño de la lista devuelta es fijo porque la lista devuelta no lo es java.util.ArrayList, sino una clase estática privada definida en su interior java.util.Arrays. Entonces, si agregamos o eliminamos elementos de la lista devuelta, se UnsupportedOperationExceptionarrojará un . Entonces deberíamos ir list22cuando queramos modificar la lista. Si tenemos Java8, entonces también podemos ir con list23.
Para que quede claro, list21puede modificarse en el sentido de que podemos llamar, list21.set(index,element)pero esta lista puede no modificarse estructuralmente, es decir, no puede agregar o eliminar elementos de la lista. También puedes consultar esta pregunta .
Si queremos una lista inmutable, podemos envolverla como:
List<Integer> list 22 = Collections.unmodifiableList(Arrays.asList(integers));
Otro punto a tener en cuenta es que el método Collections.unmodifiableListdevuelve una vista no modificable de la lista especificada. Una colección de vistas no modificables es una colección que no se puede modificar y también es una vista de una colección de respaldo. Tenga en cuenta que los cambios en la colección de respaldo aún podrían ser posibles, y si ocurren, son visibles a través de la vista no modificable.
Podemos tener una lista verdaderamente inmutable en Java 9 y 10.
Lista verdaderamente inmutable
Java 9:
String[] objects = {"Apple", "Ball", "Cat"};
List<String> objectList = List.of(objects);
Java 10 (lista verdaderamente inmutable) de dos maneras:
List.copyOf(Arrays.asList(integers))
Arrays.stream(integers).collect(Collectors.toUnmodifiableList());
También revise esta respuesta mía para más.
Arrays.asList(new int[] { 1, 2, 3 }):; definitivamente no compiló en Java 1.4.2, porque un noint[]es un .Object[]