Como posso converter um array para uma lista em Java?
Eu utilizei o Arrays.asList()
mas o comportamento (e assinatura) de alguma forma mudou de Java SE 1.4.2 (docs agora em arquivo) para 8 e a maioria dos snippets que encontrei na web utilizam o comportamento 1.4.2.
Por exemplo:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
Em muitos casos deve ser fácil de detectar, mas às vezes pode passar despercebido:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
No seu exemplo, é porque você não pode ter uma Lista de um tipo primitivo. Em outras palavras, Lista<int>
não é possível.
Você pode, no entanto, ter uma Lista<Integer>
utilizando a classe Integer
que envolve o int
primitivo. Converta seu array para um método List
com o método Arrays.asList`].
Integer[] spam = new Integer[] { 1, 2, 3 };
List<Integer> list = Arrays.asList(spam);
Veja isto código executado ao vivo no IdeOne.com.
O problema é que o varargs foi introduzido no Java5 e infelizmente, Arrays.asList()
ficou sobrecarregado com uma versão vararg também. Então Arrays.asList(spam)
é entendido pelo compilador Java5 como um parâmetro vararg de arrays int.
Este problema é explicado em mais detalhes em Effective Java 2nd Ed., Capítulo 7, Item 42.