“Unindo” arrays em Java: 5 maneiras comprovadas (com código)
Olá, colega! Se você está lendo este texto, significa que se deparou com uma tarefa que mais cedo ou mais tarde surge para todo desenvolvedor Java — como unir dois arrays em Java? Parece simples, não é? Pegar e somar. Mas não é bem assim. Em Java, não há um operador nativo para concatenação de arrays (como em Python ou JavaScript). E é aí que a coisa fica interessante.
No Stack Overflow, a pergunta “How can I concatenate two arrays in Java?” acumulou centenas de milhares de visualizações. Isso significa que até mesmo desenvolvedores experientes às vezes ficam em dúvida na escolha. Neste tutorial, vou mostrar 5 maneiras funcionais — desde a cópia manual “antiga” até a moderna Stream API. Você conhecerá os prós e contras de cada abordagem e poderá escolher a que melhor se adapta à sua tarefa.
Vamos nessa!
Por que não há uma maneira simples de unir arrays em Java?
Um array em Java é um objeto de tamanho fixo. Você não pode simplesmente “adicionar” um array ao final de outro. É necessário criar um novo array e copiar os elementos para ele. Mas não se preocupe — vou mostrar como fazer isso de forma elegante e sem dor.
Maneira 1: Cópia manual (para quem gosta de controlar tudo)
O método mais óbvio e direto. Criamos um novo array, cujo comprimento é a soma dos comprimentos dos dois originais, e o preenchemos em um loop.
public class ArrayConcatManual { public static void main(String[] args) { int[] array1 = {1, 2, 3}; int[] array2 = {4, 5, 6};
int[] result = new int[array1.length + array2.length];
// Copia o primeiro array for (int i = 0; i < array1.length; i++) { result[i] = array1[i]; }
// Copia o segundo array for (int i = 0; i < array2.length; i++) { result[array1.length + i] = array2[i]; }
// Exibe o resultado for (int num : result) { System.out.print(num + " "); } // Saída: 1 2 3 4 5 6 }}Prós: controle total, não requer bibliotecas externas, fácil de ler.
Contras: verboso, fácil errar nos índices (especialmente se houver mais de dois arrays).
Dica: Use este método se quiser entender como tudo funciona “por baixo dos panos” ou se estiver escrevendo código para fins educacionais.
Maneira 2: System.arraycopy() — ferramenta padrão
Em Java, existe o método embutido System.arraycopy(). Ele é mais rápido que o loop manual, pois usa código nativo (native method). Esta é a maneira recomendada para produção.
import java.util.Arrays;
public class ArrayConcatSystem { public static void main(String[] args) { String[] fruits1 = {"apple", "banana"}; String[] fruits2 = {"cherry", "date"};
String[] result = new String[fruits1.length + fruits2.length];
System.arraycopy(fruits1, 0, result, 0, fruits1.length); System.arraycopy(fruits2, 0, result, fruits1.length, fruits2.length);
System.out.println(Arrays.toString(result)); // Saída: [apple, banana, cherry, date] }}Como funciona:
- Primeiro argumento — array de origem.
- Segundo — posição inicial no array de origem (geralmente 0).
- Terceiro — array de destino.
- Quarto — posição inicial no array de destino.
- Quinto — número de elementos a copiar.
Prós: rápido, compacto, biblioteca padrão.
Contras: é necessário cuidar dos índices, pode lançar ArrayIndexOutOfBoundsException.
Maneira 3: ArrayList e coleções — flexibilidade e conveniência
Se você precisa não apenas unir arrays, mas também trabalhar com eles depois (adicionar, remover