Как объединить два массива
Короткий ответ
Создайте массив нужной длины с первым массивом внутри и докопируйте второй:
void main() {
int[] a = {1, 2, 3};
int[] b = {4, 5};
int[] merged = Arrays.copyOf(a, a.length + b.length);
System.arraycopy(b, 0, merged, a.length, b.length);
IO.println(Arrays.toString(merged));
}Результат:
[1, 2, 3, 4, 5]Через поток
IntStream.concat() и Stream.concat() склеивают потоки:
void main() {
int[] a = {1, 2};
int[] b = {3, 4};
String[] x = {"a"};
String[] y = {"b", "c"};
IO.println(Arrays.toString(IntStream.concat(Arrays.stream(a), Arrays.stream(b)).toArray()));
IO.println(Arrays.toString(Stream.concat(Arrays.stream(x), Arrays.stream(y)).toArray(String[]::new)));
}Результат:
[1, 2, 3, 4]
[a, b, c]Без повторов
Добавьте distinct(), чтобы одинаковые значения попали в результат один раз:
void main() {
int[] a = {1, 2, 3};
int[] b = {2, 3, 4};
IO.println(Arrays.toString(IntStream.concat(Arrays.stream(a), Arrays.stream(b)).distinct().toArray()));
}Результат:
[1, 2, 3, 4]Частая ошибка
Сложить массивы оператором +. Для массивов он не определён:
void main() {
int[] a = {1};
int[] b = {2};
int[] c = a + b;
}Результат:
Main.java:4: error: bad operand types for binary operator '+'Функции из этого ответа
- Arrays.copyOf() — Копирует массив в новый — той же или другой длины. Часть массива копирует copyOfRange().
- Stream.of() — Создаёт поток из перечисленных значений.