В этой программе вы научитесь объединять два массива в Kotlin, используя arraycopy и без него.
Пример 1: объединение двух массивов с помощью копирования массива
import java.util.Arrays fun main(args: Array) ( val array1 = intArrayOf(1, 2, 3) val array2 = intArrayOf(4, 5, 6) val aLen = array1.size val bLen = array2.size val result = IntArray(aLen + bLen) System.arraycopy(array1, 0, result, 0, aLen) System.arraycopy(array2, 0, result, aLen, bLen) println(Arrays.toString(result)) )
Когда вы запустите программу, вывод будет:
(1, 2, 3, 4, 5, 6)
В приведенной выше программе у нас есть два целочисленных массива array1 и array2.
Чтобы объединить (объединить) два массива, мы находим его длину, хранящуюся в aLen и bLen соответственно. Затем мы создаем новый результат целочисленного массива длиной aLen + bLen.
Теперь, чтобы объединить оба массива, мы копируем каждый элемент в оба массива, чтобы получить результат с помощью функции arraycopy ().
arraycopy(array1, 0, result, 0, aLen)
Функция, в простых условиях, сообщает программа для копирования array1 начиная с индекса 0
в результате индекс 0
к Alen.
Кроме того, для arraycopy(array2, 0, result, aLen, bLen)
сообщает программа для копирования array2 начиная с индекса 0
к result
от индекса Alen к Блен.
Пример 2: объединение двух массивов без использования копирования массива
import java.util.Arrays fun main(args: Array) ( val array1 = intArrayOf(1, 2, 3) val array2 = intArrayOf(4, 5, 6) val length = array1.size + array2.size val result = IntArray(length) var pos = 0 for (element in array1) ( result(pos) = element pos++ ) for (element in array2) ( result(pos) = element pos++ ) println(Arrays.toString(result)) )
Когда вы запустите программу, вывод будет:
(1, 2, 3, 4, 5, 6)
В приведенной выше программе вместо использования arraycopy
мы вручную копируем каждый элемент обоих массивов array1 и array2 в результат.
Мы храним полную длину , необходимую для результата, то есть array1.length + array2. length
. Затем мы создаем новый массив результата длины.
Теперь мы используем цикл for-each для обхода каждого элемента array1 и сохранения его в результате. После назначения его, мы увеличиваем позы позиции 1, pos++
.
Точно так же мы делаем то же самое для array2 и сохраняем каждый элемент результата, начиная с позиции после array1.
Вот эквивалентный Java-код: Java-программа для объединения двух массивов.