Ebben a programban megtanulsz két tömböt összefűzni Kotlinban arraycopy segítségével és anélkül.
1. példa: Két tömb összefűzése tömbminta segítségével
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)) )
A program futtatásakor a kimenet a következő lesz:
(1, 2, 3, 4, 5, 6)
A fenti programban két egész tömböt találunk: array1 és array2.
Két tömb egyesítéséhez (összefűzéséhez) megtaláljuk a hosszát az aLen és a bLen tárolva. Ezután létrehozunk egy új egész tömb eredményt aLen + bLen hosszúsággal.
Most, hogy mindkettőhöz kombinálódhassunk, az arraycopy () függvény használatával mindkét elemet átmásoljuk mindkét tömb mindegyik elemébe.
A arraycopy(array1, 0, result, 0, aLen)
függvény egyszerű kifejezéssel megmondja a programnak, hogy másolja az 1. tömböt indexről 0
az eredményre indexről 0
az aLen-re.
Hasonlóképpen, az arraycopy(array2, 0, result, aLen, bLen)
azt mondja, hogy a program másolja tomb2 kezdve index 0
az result
indexből Alen a Blen.
2. példa: Két tömb összefűzése tömbkóp használata nélkül
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)) )
A program futtatásakor a kimenet a következő lesz:
(1, 2, 3, 4, 5, 6)
A fenti programban, ahelyett, hogy használnánk arraycopy
, manuálisan átmásoljuk mindkét tömb1 és tömb2 tömb mindegyik elemét az eredményre.
Tároljuk az eredményhez szükséges teljes hosszat, azaz array1.length + array2. length
. Ezután létrehozunk egy új tömb eredményt a hosszúságról.
Most a for-hurok segítségével végigvezetjük a tömb1 egyes elemeit, és tároljuk az eredményben. Kiosztása után, mi növeli a pozíció pos 1, pos++
.
Hasonlóképpen, ugyanezt tesszük a 2. tömb esetében is, és minden elemet elmentünk az eredménybe a tömb1 utáni pozíciótól kezdve.
Itt található az egyenértékű Java kód: Java program két tömb összefűzésére.