V tomto programu se naučíte zřetězit dvě pole v Kotlinu pomocí arraycopy a bez ní.
Příklad 1: Zřetězit dvě pole pomocí 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)) )
Když spustíte program, výstup bude:
(1, 2, 3, 4, 5, 6)
Ve výše uvedeném programu máme dvě celočíselná pole array1 a array2.
Abychom mohli kombinovat (zřetězit) dvě pole, zjistíme jeho délku uloženou v aLen, respektive bLen. Poté vytvoříme nový výsledek celočíselného pole s délkou aLen + bLen.
Nyní, abychom je mohli kombinovat s oběma, zkopírujeme každý prvek do obou polí, abychom získali výsledek pomocí funkce arraycopy ().
arraycopy(array1, 0, result, 0, aLen)
Funkce, zjednodušeně řečeno, říká program zkopírovat array1 počínaje indexem 0
za následek z indexu 0
na Alén.
Podobně for arraycopy(array2, 0, result, aLen, bLen)
říká programu, aby kopíroval pole2 počínaje od indexu 0
po result
od indexu aLen do bLen.
Příklad 2: Zřetězit dvě pole bez použití arraycopy
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)) )
Když spustíte program, výstup bude:
(1, 2, 3, 4, 5, 6)
Ve výše uvedeném programu namísto použití arraycopy
ručně zkopírujeme každý prvek obou polí array1 a array2 do výsledku.
Uložíme celkovou délku požadovanou pro výsledek, tj array1.length + array2. length
. Poté vytvoříme nový výsledek pole délky.
Nyní používáme smyčku for-each k procházení každým prvkem pole1 a uložení do výsledku. Po přiřazení jsme zvýšit pos pozice 1, pos++
.
Stejně tak uděláme totéž pro pole2 a každý prvek uložíme do výsledku počínaje pozicí po poli1.
Tady je ekvivalentní kód Java: Program Java pro zřetězení dvou polí.