U ovom programu naučit ćete spajati dva polja u Javi pomoću arraycopy i bez nje.
Da biste razumjeli ovaj primjer, trebali biste imati znanje o sljedećim temama programiranja Java:
- Java nizovi
- Java za svaku petlju
Primjer 1: Spojite dva polja pomoću 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)); ) )
Izlaz
(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 arraycopy()
funkcije.
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; 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)); ) )
Izlaz
(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 petlju for-each za iteraciju kroz svaki element polja1 i pohranjujemo 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.