Como faço int[]
para converter List<Integer>
em Java?
Obviamente, estou interessado em qualquer outra resposta que não seja fazê-lo em um loop, item por item. Mas se não houver outra resposta, escolherei essa como a melhor para mostrar o fato de que essa funcionalidade não faz parte do Java.
java
arrays
collections
boxing
autoboxing
pupeno
fonte
fonte
Respostas:
Não há atalho para converter de
int[]
paraList<Integer>
comoArrays.asList
não lida com boxe e apenas cria umList<int[]>
que não é o que você deseja. Você precisa criar um método utilitário.fonte
new ArrayList<Integer>() {{ for (int i : ints) add(i); }}
Streams
No Java 8, você pode fazer isso
fonte
Também de bibliotecas de goiabas ... com.google.common.primitives.Ints:
fonte
Arrays.asList não funcionará como algumas das outras respostas esperam.
Este código não criará uma lista de 10 números inteiros. Ele imprimirá 1 , não 10 :
Isso criará uma lista de números inteiros:
Se você já possui a matriz de entradas, não há uma maneira rápida de converter, é melhor usar o loop.
Por outro lado, se sua matriz tiver Objetos, não primitivos, Arrays.asList funcionará:
fonte
Vou adicionar outra resposta com um método diferente; sem loop, mas uma classe anônima que utilizará os recursos de caixa automática:
fonte
set
método e agora eu posso mesmo tipo da matriz ...O menor pedaço de código seria:
de onde ArrayUtils vem de commons-lang :)
fonte
ArrayUtils
que é uma grande biblioteca relativo para um aplicativo AndroidArrayUtils.toPrimitive(...)
é a chave.No Java 8 com fluxo:
ou com colecionadores
fonte
No Java 8:
fonte
Se você estiver usando o java 8, podemos usar a API de fluxo para convertê-lo em uma lista.
Você também pode usar o IntStream para converter também.
Existem outras bibliotecas externas, como goiaba e apache commons, também estão disponíveis para convertê-lo.
Felicidades.
fonte
Também vale a pena conferir este relatório de bug , que foi fechado com o motivo "Não é um defeito" e o seguinte texto:
"A autoboxing de matrizes inteiras não é um comportamento especificado, por um bom motivo. Pode ser proibitivamente caro para matrizes grandes".
fonte
tente esta classe:
caso de teste:
fonte
A melhor foto:
Exemplos:
fonte
Se você estiver aberto para usar uma biblioteca de terceiros, isso funcionará no Eclipse Collections :
Nota: Sou um colaborador das Coleções Eclipse .
fonte
fonte
Que tal isso:
int[] a = {1,2,3}; Integer[] b = ArrayUtils.toObject(a); List<Integer> c = Arrays.asList(b);
fonte
Aqui está uma solução:
Resultado:
fonte
Aqui está outra possibilidade, novamente com o Java 8 Streams:
fonte
Aqui está uma maneira genérica de converter array para ArrayList
Uso
fonte
veja isso
fonte