Java Programming

Concatenação Eficiente de Arrays em Java

Spread the love

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

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[]).

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *