Come si converte un array in una lista in Java?
Ho usato il Arrays.asList()
ma il comportamento (e la firma) in qualche modo è cambiato da Java SE 1.4.2 (docs ora in archivio) a 8 e la maggior parte degli snippet che ho trovato sul web usano il comportamento 1.4.2.
Per esempio:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
In molti casi dovrebbe essere facile da rilevare, ma a volte può passare inosservato:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
Nel tuo esempio, è perché non puoi avere una Lista di un tipo primitivo. In altre parole, List<int>
non è possibile.
Puoi però avere una List<Integer>
usando la classe Integer
che avvolge la primitiva int
. Converti il tuo array in una List
con il metodo di utilità Arrays.asList
.
Integer[] spam = new Integer[] { 1, 2, 3 };
List<Integer> list = Arrays.asList(spam);
Vedi questo codice eseguito dal vivo su IdeOne.com.
Il problema è che i varargs sono stati introdotti in Java5 e sfortunatamente, Arrays.asList()
è stato sovraccaricato anche con una versione vararg. Così Arrays.asList(spam)
è compreso dal compilatore Java5 come un parametro vararg di array int.
Questo problema è spiegato più dettagliatamente in Effective Java 2nd Ed., capitolo 7, punto 42.