Java não oferece uma operação de concatenação de arrays embutida. Como arrays têm tamanho fixo, combinar dois arrays requer criar um novo array maior e copiar os elementos. Este artigo explora três métodos eficazes para alcançar isso.
Sumário
- Usando o
addAll()
do Apache Commons Lang - Aproveitando o
System.arraycopy()
- Concatenação Manual com Loops
Usando o addAll()
do Apache Commons Lang
A biblioteca Apache Commons Lang fornece o conveniente método addAll()
dentro de sua classe ArrayUtils
. Isso simplifica significativamente a concatenação de arrays. Primeiro, adicione a dependência ao seu projeto (por exemplo, usando Maven):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version> <!-- Use a versão mais recente -->
</dependency>
Então, use-o da seguinte forma:
import org.apache.commons.lang3.ArrayUtils;
public class ArrayConcatenation {
public static void main(String[] args) {
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6};
int[] concatenatedArray = ArrayUtils.addAll(array1, array2);
for (int i : concatenatedArray) {
System.out.print(i + " "); // Saída: 1 2 3 4 5 6
}
}
}
Esta abordagem é limpa e eficiente, mas introduz uma dependência externa.
Aproveitando o System.arraycopy()
O System.arraycopy()
embutido em Java fornece uma solução nativa. Este método copia uma parte de um array para outro. Requer a criação manual de arrays e gerenciamento de índices:
public class ArrayConcatenation {
public static void main(String[] args) {
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6};
int[] concatenatedArray = new int[array1.length + array2.length];
System.arraycopy(array1, 0, concatenatedArray, 0, array1.length);
System.arraycopy(array2, 0, concatenatedArray, array1.length, array2.length);
for (int i : concatenatedArray) {
System.out.print(i + " "); // Saída: 1 2 3 4 5 6
}
}
}
Este método é eficiente e evita bibliotecas externas, mas é menos conciso.
Concatenação Manual com Loops
Uma abordagem mais explícita, embora menos eficiente, envolve iterar pelos dois arrays e preencher um novo array:
public class ArrayConcatenation {
public static void main(String[] args) {
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6};
int[] concatenatedArray = new int[array1.length + array2.length];
for (int i = 0; i < array1.length; i++) {
concatenatedArray[i] = array1[i];
}
for (int i = 0; i < array2.length; i++) {
concatenatedArray[array1.length + i] = array2[i];
}
for (int i : concatenatedArray) {
System.out.print(i + " "); // Saída: 1 2 3 4 5 6
}
}
}
Este método é simples e fácil de entender, tornando-o adequado para iniciantes. No entanto, é menos eficiente do que os outros métodos, especialmente para arrays grandes.
A abordagem ideal depende de suas prioridades: addAll()
oferece concisão, arraycopy()
fornece eficiência sem bibliotecas externas e o loop manual oferece clareza. Lembre-se de ajustar o código para diferentes tipos de array (por exemplo, String[]
, double[]
).