English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Учебник по основам Java

Java流程控制

Java数组

Java面向对象(I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Список (List)

Java Очередь (Queue)

Java Карта (Map)

Java Множество (Set)

Java Вход/Выход (I/O)

Java Reader/Writer

Другие темы Java

Java-программа для соединения двух массивов

Java полная коллекция примеров

В этом примере вы узнаете, как в Java соединять два массива с использованием arraycopy и без использования arraycopy.

Пример 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]

В данном примере у нас есть два массива из int array1 и array2.

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

Теперь, чтобы объединить их вместе, мы используем функцию arraycopy() для копирования каждого элемента из обоих массивов в результат.

Функция arraycopy(array1, 0, result, 0, aLen) просто информирует программу о копировании массива array1 из индекса 0 в результат, из индекса 0 в aLen.

Таким образом, arraycopy(array2, 0, result, aLen, bLen) информирует программу о копировании массива array2 из индекса 0 в результат, из индекса 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 и хранить его в результате. После назначения мы увеличиваем position на 1, position++.

Таким образом, мы выполняем такие же действия для array2 и начинаем хранить каждый элемент result после positions array1.

Java полная коллекция примеров