В тази програма ще се научите да обединявате два масива в Java с помощта на arraycopy и без него.
За да разберете този пример, трябва да имате познанията по следните теми за програмиране на Java:
- Java масиви
- Java за всеки цикъл
Пример 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. След това създаваме нов резултат от цял масив с дължина aLen + bLen.
Сега, за да комбинираме и двете, копираме всеки елемент в двата масива, за да получим резултат с помощта на arraycopy()
функция.
Най- arraycopy(array1, 0, result, 0, aLen)
функцията, с прости думи, казва програмата за копиране масив 1 като се започва от индекс 0
резултат от индекса 0
на Ален.
По същия начин for arraycopy(array2, 0, result, aLen, bLen)
казва на програмата да копира array2, започвайки от индекс 0
към result
индекс aLen в bLen.
Пример 2: Обединяване на два масива без използване на масив
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 за резултат.
Съхраняваме общата дължина, необходима за резултат, т.е. array1.length + array2. length
. След това създаваме нов резултат от масив с дължината.
Сега използваме цикъла for-за да итерираме през всеки елемент от array1 и да го съхраняваме в резултата. След като го присвоим, увеличаваме позицията pos с 1 pos++
,.
По същия начин правим същото за array2 и съхраняваме всеки елемент в резултат, започвайки от позицията след array1.