În acest program, veți învăța să concatenați două tablouri în Java folosind arraycopy și fără aceasta.
Pentru a înțelege acest exemplu, ar trebui să aveți cunoștințele despre următoarele subiecte de programare Java:
- Matrice Java
- Java pentru fiecare buclă
Exemplul 1: concatenează două matrice utilizând aropia
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)); ) )
Ieșire
(1, 2, 3, 4, 5, 6)
În programul de mai sus, avem două tablouri întregi array1 și array2.
Pentru a combina (concatena) două matrice, găsim lungimea acesteia stocată în aLen și respectiv bLen. Apoi, creăm un nou rezultat de matrice întregi cu lungimea aLen + bLen.
Acum, pentru a combina ambele, copiem fiecare element în ambele tablouri pentru a rezulta folosind arraycopy()
funcția.
arraycopy(array1, 0, result, 0, aLen)
Funcția, în termeni simpli, spune programul pentru a copia matrice1 pornind de la indexul 0
pentru a rezulta din indexul 0
la ALEN.
La fel, for arraycopy(array2, 0, result, aLen, bLen)
spune programului să copieze array2 începând de la index 0
la de result
la index aLen la bLen.
Exemplul 2: Concatenează două matrice fără a utiliza aropia
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)); ) )
Ieșire
(1, 2, 3, 4, 5, 6)
În programul de mai sus, în loc să îl folosim arraycopy
, copiem manual fiecare element din ambele matrice array1 și array2 pentru a rezulta.
Stocăm lungimea totală necesară pentru rezultat, adică array1.length + array2. length
. Apoi, creăm un nou rezultat al matricei de lungime.
Acum, folosim bucla pentru fiecare pentru a itera prin fiecare element al matricei 1 și a o stoca în rezultat. După atribuire, mărim poziția poz cu 1 pos++
,.
La fel, facem același lucru pentru array2 și stocăm fiecare element în rezultat pornind de la poziția după array1.