Conversione di array in elenco in Java
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)
- su 1.4.2 restituisce una lista contenente gli elementi 1, 2, 3
- su 1.5.0+ restituisce una lista contenente l'array spam
In molti casi dovrebbe essere facile da rilevare, ma a volte può passare inosservato:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
948
3
Nel tuo esempio, è perché non puoi avere una Lista di un tipo primitivo. In altre parole,
List
non è possibile.Puoi però avere una
List
usando la classeInteger
che avvolge la primitivaint
. Converti il tuo array in unaList
con il metodo di utilitàArrays.asList
.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.
dovete lanciare in un array