Array para lista em Java: de iniciante a profissional em 10 minutos
\n\nVocê 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\nA 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\nNeste 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\nPor que Arrays.asList() é uma armadilha?
\n\nA maneira mais popular de converter array para lista em Java é o método Arrays.asList(). Ele parece enganosamente simples:
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\n1. Tamanho fixo
\nA lista obtida através de Arrays.asList() tem tamanho fixo. Tente adicionar um elemento:
fruitList.add("orange"); // UnsupportedOperationException!\n\nVocê 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.
2. Alterações no array refletem na lista
\nA lista é uma "janela" para o array original. Altere o array — a lista também mudará:
\n\nfruits[0] = "apricot";\nSystem.out.println(fruitList.get(0)); // apricot\n\nIsso pode causar bugs difíceis de detectar, especialmente se o array for passado entre métodos.
\n\n3. Tipos primitivos não funcionam
\nTente converter um array int para lista:
\n\nint[] numbers = {1, 2, 3};\nList<int[]> list = Arrays.asList(numbers); // não List<Integer>, mas List<int[]>!\n\nEm 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\n5 maneiras de converter array para lista em Java
\n\nVamos analisar todos os principais métodos de converter array para lista em Java com exemplos e explicações.
\n\nManeira 1: Clássico Arrays.asList()
\nAdequado quando você precisa de uma lista somente para leitura ou tem certeza de que não alterará seu tamanho.
\n\nString[] 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\nManeira 2: Criando um novo ArrayList
\nA maneira mais segura de converter array para ArrayList em Java é criar uma nova instância:
\n\nString[] animals = {"cat", "dog", "bird"};\nList<String> animalList = new ArrayList<>(Arrays.asList(animals));\n// Agora é possível adicionar e remover\nanimalList.add("fish"); // OK\n\nEssa abordagem fornece uma lista mutável completa, independente do array original.
\n\nManeira 3: Collections.addAll()
\nUm método elegante para converter array em coleção Java. Particularmente útil quando a lista já existe:
\n\nString[] 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);