Rješenje problema kopiranja 2D niza nije tako jednostavno kao kopiranje 1D niza jer jednostavno kopiranje referenci na unutarnje nizove neće stvoriti duboke kopije samih podnizova. Postoji nekoliko pristupa rješavanju ovog problema, a mi ćemo detaljno razmotriti jednu takvu metodu, korak po korak ispitivanje koda i njegovu implementaciju.
Prvo, kreirajmo funkciju koja kopira 2D niz:
public static int[][] copy2DArray(int[][] original) {
int[][] kopija = novo int[original.length][];
for (int i = 0; i < original.length; i++) { copy[i] = Arrays.copyOf(original[i], original[i].length); } vratiti kopiju; } [/code] U gornjem kodu započinjemo s definiranjem funkcije nazvane `copy2DArray` koja uzima 2D niz cijelih brojeva, nazvan **original**, kao svoj parametar. Nakon definiranja funkcije, stvaramo novi 2D niz, nazvan **copy**, iste duljine kao izvorni niz. Zatim koristimo for petlju za iteraciju kroz elemente izvornog niza i kopiranje u novi niz pomoću metode `Arrays.copyOf()` iz biblioteke `java.util.Arrays`. Ova metoda stvara duboku kopiju podnizova. Konačno, vraćamo kopiju 2D polja.
Razumijevanje 2D polja
U Javi je **2D niz** u biti niz nizova. Može se vizualizirati kao tablica s redovima i stupcima. Elementima se može pristupiti pomoću dva indeksa: jedan za red, a drugi za stupac. Kada radite s 2D nizovima u Javi, bitno je pratiti oba indeksa, tako da možete ispravno pristupiti podacima i manipulirati njima.
- 2D niz se stvara pomoću sljedeće sintakse:
`vrsta podataka[][] naziv polja = nova vrsta podataka[veličina reda][veličina stupca];` - Elementima u 2D nizu može se pristupiti pomoću dva indeksa: `nazivniza[red][stupac];`
- Iteracija kroz 2D polje obično uključuje ugniježđene petlje.
Prije daljnjeg ronjenja kopiraj niz u 2D, važno je razumjeti zašto je važno stvoriti duboke kopije podnizova. Plitka kopija samo bi kopirala reference na podmatrice, a sve promjene napravljene na izvorniku također bi utjecale na kopiju. Stvaranjem dubinskih kopija osiguravamo da promjene u jednom nizu ne utječu na drugi.
Java.util.Arrays biblioteka
U našem smo rješenju koristili biblioteku `java.util.Arrays` koja pruža korisne uslužne metode za rad s nizovima. Za specifičan problem kopiranja 2D niza, upotrijebili smo metodu `Arrays.copyOf()` za stvaranje dubinskih kopija podnizova.
- Metoda `Arrays.copyOf()` stvara duboku kopiju izvornog polja. Potrebna su mu dva parametra: originalni niz i duljina novog niza.
- Ostale korisne metode u ovoj biblioteci uključuju `Arrays.fill()`, `Arrays.sort()` i `Arrays.binarySearch()`.
Zaključno, kopiranje 2D polja u Javi zahtijeva dubinsku kopiju kako bi se spriječilo da promjene izvornog polja utječu na kopiju. Demonstrirali smo rješenje korištenjem metode `Arrays.copyOf()` iz biblioteke `java.util.Arrays`, a stvorena funkcija je učinkovita i laka za razumijevanje. S našim dubljim razumijevanjem 2D nizova, biblioteke Java.util.Arrays i manipulacije nizovima, sada se možemo uhvatiti u koštac s drugim izazovima s većim povjerenjem i robusnijim rješenjima u Javi.