Parece um pouco tarde, mas aqui estão meus dois centavos. Não podemos ter List<int>
como int
é um tipo primitivo, por isso só podemos terList<Integer>
.
Java 8 (matriz int)
int[] ints = new int[] {1,2,3,4,5};
List<Integer> list11 =Arrays.stream(ints).boxed().collect(Collectors.toList());
Java 8 e abaixo (matriz inteira)
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
Precisa ArrayList e não List?
Caso desejemos uma implementação específica de, List
por exemplo ArrayList
, podemos usar toCollection
como:
ArrayList<Integer> list24 = Arrays.stream(integers)
.collect(Collectors.toCollection(ArrayList::new));
Por list21
que não pode ser estruturalmente modificado?
Quando usamos Arrays.asList
o tamanho da lista retornada, é corrigido porque a lista retornada não é java.util.ArrayList
, mas uma classe estática privada definida dentro java.util.Arrays
. Portanto, se adicionarmos ou removermos elementos da lista retornada, um UnsupportedOperationException
será lançado. Portanto, devemos prosseguir list22
quando queremos modificar a lista. Se tivermos o Java8, também podemos usar list23
.
Para ser claro, list21
pode ser modificado no sentido que podemos chamar, list21.set(index,element)
mas esta lista não pode ser estruturalmente modificada, ou seja, não pode adicionar ou remover elementos da lista. Você também pode verificar esta pergunta .
Se queremos uma lista imutável, podemos agrupá-la como:
List<Integer> list 22 = Collections.unmodifiableList(Arrays.asList(integers));
Outro ponto a ser observado é que o método Collections.unmodifiableList
retorna uma visão inalterável da lista especificada. Uma coleção de visualizações não modificáveis é uma coleção que não pode ser modificada e também é uma exibição em uma coleção de suporte. Observe que as alterações na coleção de backup ainda podem ser possíveis e, se ocorrerem, serão visíveis na visualização não modificável.
Podemos ter uma lista realmente imutável no Java 9 e 10.
Lista verdadeiramente imutável
Java 9:
String[] objects = {"Apple", "Ball", "Cat"};
List<String> objectList = List.of(objects);
Java 10 (lista verdadeiramente imutável) de duas maneiras:
List.copyOf(Arrays.asList(integers))
Arrays.stream(integers).collect(Collectors.toUnmodifiableList());
Verifique também esta minha resposta para mais.
Arrays.asList(new int[] { 1, 2, 3 })
:; definitivamente não compilou no Java 1.4.2, porque um nãoint[]
é um .Object[]