Объединение двух массивов в Java — несколько способов с примерами

Чтобы понять этот пример, вам нужно знать следующие темы Java:

  • массивы (Arrays);

  • цикл for-each.

Пример 1: объединение двух массивов с помощью arraycopy

import java.util.Arrays;

public class Concat {

    public static void main(String[] args) {
        int[] array1 = {1, 2, 3};
        int[] array2 = {4, 5, 6};

        int aLen = array1.length;
        int bLen = array2.length;
        int[] result = new int[aLen + bLen];

        System.arraycopy(array1, 0, result, 0, aLen);
        System.arraycopy(array2, 0, result, aLen, bLen);

        System.out.println(Arrays.toString(result));
    }
}

Вывод:

[1, 2, 3, 4, 5, 6]

В приведённой выше программе у нас есть два массива целых чисел — array1 и array2.

Чтобы их объединить (склеить), мы находим их длины и сохраняем в переменных aLen и bLen. Затем создаём новый массив result длиной aLen + bLen.

Чтобы скомбинировать оба массива, мы копируем каждый элемент из обоих массивов в result с помощью функции arraycopy().

Вызов arraycopy(array1, 0, result, 0, aLen) простыми словами говорит программе скопировать массив array1, начиная с индекса 0, в массив result, с индекса 0 и до индекса aLen.

Аналогично, arraycopy(array2, 0, result, aLen, bLen) копирует массив array2 с индекса 0 в массив result начиная с позиции aLen, длиной bLen.


Пример 2: объединение двух массивов без arraycopy

import java.util.Arrays;

public class Concat {

    public static void main(String[] args) {
        int[] array1 = {1, 2, 3};
        int[] array2 = {4, 5, 6};

        int length = array1.length + array2.length;

        int[] result = new int[length];
        int pos = 0;
        for (int element : array1) {
            result[pos] = element;
            pos++;
        }

        for (int element : array2) {
            result[pos] = element;
            pos++;
        }

        System.out.println(Arrays.toString(result));
    }
}

Вывод:

[1, 2, 3, 4, 5, 6]

В приведённой выше программе вместо arraycopy мы вручную копируем каждый элемент обоих массивов array1 и array2 в массив result.

Сначала мы запоминаем общую длину, которая потребуется для result, то есть array1.length + array2.length. Затем создаём новый массив result нужной длины.

Дальше мы используем цикл for-each, чтобы пройти по каждому элементу array1 и записать его в result. После записи увеличиваем позицию pos на 1 (pos++).

Аналогично делаем для array2 — записываем каждый его элемент в result, начиная с позиции, идущей сразу после array1.