U ovom programu naučit ćete spajati dva niza u Kotlinu pomoću arraycopy i bez nje.
Primjer 1: Spojite dva polja pomoću 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)) )
Kada pokrenete program, izlaz će biti:
(1, 2, 3, 4, 5, 6)
U gornjem programu imamo dva cjelovita niza array1 i array2.
Kako bismo kombinirali (spojili) dva niza, nalazimo njegovu duljinu pohranjenu u aLen, odnosno bLen. Zatim kreiramo novi rezultat cijelog polja s duljinom aLen + bLen.
Sada, da bismo kombinirali oboje, kopiramo svaki element u oba polja da bismo dobili rezultat pomoću funkcije arraycopy ().
arraycopy(array1, 0, result, 0, aLen)
Funkcija, pojednostavljeno rečeno, kaže program za kopiranje polje1 počevši od indeksa 0
rezultat od indeksa 0
do Alen.
Isto tako, for arraycopy(array2, 0, result, aLen, bLen)
govori programu da kopira niz 2 počevši od indeksa 0
do result
indeksa aLen u bLen.
Primjer 2: Spojite dva niza bez upotrebe 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)) )
Kada pokrenete program, izlaz će biti:
(1, 2, 3, 4, 5, 6)
U gornjem programu, umjesto da koristimo arraycopy
, ručno kopiramo svaki element oba polja array1 i array2 da bismo dobili rezultat.
Pohranjujemo ukupnu duljinu potrebnu za rezultat, tj array1.length + array2. length
. Zatim kreiramo novi rezultat polja s duljinom.
Sada koristimo for-svaka petlja da petljamo kroz svaki element niza1 i pohranimo ga u rezultat. Nakon što je ustupanje, možemo poboljšati položaj poz za 1, pos++
.
Isto tako, činimo isto za array2 i pohranjujemo svaki element u rezultat počevši od položaja nakon array1.
Evo ekvivalentnog Java koda: Java program za spajanje dva polja.