Объединение двух массивов в 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.