W tym programie nauczysz się łączyć dwie tablice w Kotlinie przy użyciu arraycopy i bez niej.
Przykład 1: łączenie dwóch tablic przy użyciu 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)) )
Po uruchomieniu programu wynik będzie następujący:
(1, 2, 3, 4, 5, 6)
W powyższym programie mamy dwie tablice liczb całkowitych tablica1 i tablica2.
Aby połączyć (konkatenować) dwie tablice, znajdujemy jej długość przechowywaną odpowiednio w aLen i bLen. Następnie tworzymy nową tablicę liczb całkowitych o długości aLen + bLen.
Teraz, aby połączyć je z obydwoma, kopiujemy każdy element z obu tablic w celu uzyskania wyniku za pomocą funkcji arraycopy ().
arraycopy(array1, 0, result, 0, aLen)
Funkcja, w prostych słowach, że program do kopiowania array1 począwszy od wskaźnika 0
wynika z indeksu 0
do Alen.
Podobnie, for arraycopy(array2, 0, result, aLen, bLen)
mówi programowi, aby skopiował tablicę2 zaczynając od indeksu 0
do result
z indeksu aLen do bLen.
Przykład 2: łączenie dwóch tablic bez użycia 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)) )
Po uruchomieniu programu wynik będzie następujący:
(1, 2, 3, 4, 5, 6)
W powyższym programie zamiast używać arraycopy
, ręcznie kopiujemy każdy element obu tablic tablica1 i tablica2 do wyniku.
Przechowujemy całkowitą długość wymaganą do wyniku, tj array1.length + array2. length
. Następnie tworzymy nową tablicę wynikową długości.
Teraz używamy pętli for-each do przechodzenia przez każdy element tablicy array1 i zapisywania go w wyniku. Po przypisaniu go, możemy zwiększyć poz pozycji 1, pos++
.
Podobnie robimy to samo dla array2 i przechowujemy każdy element w wyniku, zaczynając od pozycji po array1.
Oto równoważny kod w Javie: program w języku Java do łączenia dwóch tablic.