V tomto programe sa naučíte spájať dve polia v Jave pomocou arraycopy a bez nej.
Aby ste pochopili tento príklad, mali by ste mať znalosti nasledujúcich tém programovania v jazyku Java:
- Java polia
- Java pre každú slučku
Príklad 1: Zreťazenie dvoch polí pomocou arraycopy
import java.util.Arrays; public class Concat ( public static void main(String() args) ( int() array1 = (1, 2, 3); int() array2 = (4, 5, 6); int aLen = array1.length; int bLen = array2.length; int() result = new int(aLen + bLen); System.arraycopy(array1, 0, result, 0, aLen); System.arraycopy(array2, 0, result, aLen, bLen); System.out.println(Arrays.toString(result)); ) )
Výkon
(1, 2, 3, 4, 5, 6)
Vo vyššie uvedenom programe máme dve celočíselné polia array1 a array2.
Aby sme spojili (zreťazili) dve polia, nájdeme jej dĺžku uloženú v aLen respektíve bLen. Potom vytvoríme nový výsledok celočíselného poľa s dĺžkou aLen + bLen.
Teraz, aby sme obe skombinovali, skopírujeme každý prvok do oboch polí, aby sme dosiahli výsledok pomocou arraycopy()
funkcie.
arraycopy(array1, 0, result, 0, aLen)
Funkcie, zjednodušene povedané, hovorí program skopírovať array1 počnúc indexom 0
za následok z indexu 0
na Alén.
Rovnako tak for arraycopy(array2, 0, result, aLen, bLen)
povie programu, aby skopíroval pole2 začínajúce z indexu 0
do result
z indexu aLen do bLen.
Príklad 2: Zreťazte dve polia bez použitia arraycopy
import java.util.Arrays; public class Concat ( public static void main(String() args) ( int() array1 = (1, 2, 3); int() array2 = (4, 5, 6); int length = array1.length + array2.length; int() result = new int(length); int pos = 0; for (int element : array1) ( result(pos) = element; pos++; ) for (int element : array2) ( result(pos) = element; pos++; ) System.out.println(Arrays.toString(result)); ) )
Výkon
(1, 2, 3, 4, 5, 6)
Vo vyššie uvedenom programe namiesto použitia arraycopy
ručne skopírujeme každý prvok obidvoch polí array1 a array2, aby sme dosiahli výsledok.
Uložíme celkovú dĺžku potrebnú na výsledok, tj array1.length + array2. length
. Potom vytvoríme nový výsledok dĺžky poľa.
Teraz používame slučku for-each na iteráciu cez každý prvok poľa1 a uloženie do výsledku. Po priradení sme zvýšiť pos pozície 1, pos++
.
Rovnako urobíme to isté pre pole2 a každý prvok uložíme do výsledku počnúc pozíciou po poli1.