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