Array para lista em Java: 5 maneiras e armadilhas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Array para lista em Java: de iniciante a profissional em 10 minutos

\n\n

Você já escreveu um código que funcionava perfeitamente com um array, e de repente precisou de uma lista? Ou, pior ainda, recebeu uma exceção misteriosa ao tentar adicionar um elemento a uma lista criada a partir de um array? Se sim, você veio ao lugar certo.

\n\n

A conversão de array to list em Java é uma daquelas tarefas que parecem simples, mas escondem muitas surpresas. No Stack Overflow, essa pergunta acumulou centenas de milhares de visualizações, e não é à toa: por trás da aparente simplicidade, existem nuances importantes sobre o trabalho com coleções.

\n\n

Neste artigo, vamos abordar todas as maneiras legais de converter array para lista em Java, aprender a evitar erros típicos e descobrir qual método escolher em cada situação. Vamos lá!

\n\n

Por que Arrays.asList() é uma armadilha?

\n\n

A maneira mais popular de converter array para lista em Java é o método Arrays.asList(). Ele parece enganosamente simples:

\n\n
String[] fruits = {"apple", "banana", "cherry"};\nList<String> fruitList = Arrays.asList(fruits);
\n\n

É só isso? Quase. Mas existem três "poréns" importantes que nem todos conhecem:

\n\n

1. Tamanho fixo

\n

A lista obtida através de Arrays.asList() tem tamanho fixo. Tente adicionar um elemento:

\n\n
fruitList.add("orange"); // UnsupportedOperationException!
\n\n

Você receberá um UnsupportedOperationException. Por quê? Porque por baixo dos panos, não é um ArrayList real, mas uma implementação interna que apenas encapsula o array.

\n\n

2. Alterações no array refletem na lista

\n

A lista é uma "janela" para o array original. Altere o array — a lista também mudará:

\n\n
fruits[0] = "apricot";\nSystem.out.println(fruitList.get(0)); // apricot
\n\n

Isso pode causar bugs difíceis de detectar, especialmente se o array for passado entre métodos.

\n\n

3. Tipos primitivos não funcionam

\n

Tente converter um array int para lista:

\n\n
int[] numbers = {1, 2, 3};\nList<int[]> list = Arrays.asList(numbers); // não List<Integer>, mas List<int[]>!
\n\n

Em vez de uma lista de números, você obtém uma lista contendo um único elemento — o array inteiro. Java não consegue empacotar automaticamente primitivos em uma lista.

\n\n

5 maneiras de converter array para lista em Java

\n\n

Vamos analisar todos os principais métodos de converter array para lista em Java com exemplos e explicações.

\n\n

Maneira 1: Clássico Arrays.asList()

\n

Adequado quando você precisa de uma lista somente para leitura ou tem certeza de que não alterará seu tamanho.

\n\n
String[] colors = {"red", "green", "blue"};\nList<String> colorList = Arrays.asList(colors);\n// Funciona: leitura, substituição de elementos\ncolorList.set(0, "yellow");\n// Não funciona: adição, remoção
\n\n

Maneira 2: Criando um novo ArrayList

\n

A maneira mais segura de converter array para ArrayList em Java é criar uma nova instância:

\n\n
String[] animals = {"cat", "dog", "bird"};\nList<String> animalList = new ArrayList<>(Arrays.asList(animals));\n// Agora é possível adicionar e remover\nanimalList.add("fish"); // OK
\n\n

Essa abordagem fornece uma lista mutável completa, independente do array original.

\n\n

Maneira 3: Collections.addAll()

\n

Um método elegante para converter array em coleção Java. Particularmente útil quando a lista já existe:

\n\n
String[] cities = {"Moscow", "Paris", "London"};\nList<String> cityList = new ArrayList<>();\nCollections.addAll(cityList, cities);\n// Ou em uma linha:\nList<String> cityList2 = new ArrayList<>(cities.length);\nCollections.addAll(cityList2, cities);

Blogs

Book Recommendations