¿Cómo se convierte un array en una lista en Java?
Utilicé el Arrays.asList()
pero el comportamiento (y la firma) de alguna manera cambió de Java SE 1.4.2 (docs ahora en el archivo) a 8 y la mayoría de los fragmentos que encontré en la web utilizan el comportamiento 1.4.2.
Por ejemplo:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
En muchos casos debería ser fácil de detectar, pero a veces puede pasar desapercibido:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
En tu ejemplo, es porque no puedes tener una Lista de un tipo primitivo. En otras palabras, List<int>
no es posible.
Sin embargo, puedes tener una Lista<Integer>
usando la clase Integer
que envuelve la primitiva int
. Convierte tu array en una List
con el método de utilidad Arrays.asList
.
Integer[] spam = new Integer[] { 1, 2, 3 };
List<Integer> list = Arrays.asList(spam);
Vea este código ejecutado en vivo en IdeOne.com.
El problema es que los varargs se introdujeron en Java5 y, desafortunadamente, Arrays.asList()
se sobrecargó con una versión vararg también. Así que Arrays.asList(spam)
es entendido por el compilador de Java5 como un parámetro vararg de arrays int.
Este problema se explica con más detalle en Java Efectivo 2ª Ed., capítulo 7, punto 42.