
Rešitev problema kopiranja matrike 2D ni tako enostavna kot kopiranje matrike 1D, ker preprosto kopiranje referenc na notranje matrike ne bo ustvarilo globokih kopij samih podmatrik. Obstaja več pristopov za rešitev te težave in podrobno bomo razpravljali o eni takšni metodi, postopnem pregledu kode in njeni izvedbi.
Najprej ustvarimo funkcijo, ki kopira 2D matriko:
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); } vrni kopijo; } [/code] V zgornji kodi začnemo z definiranjem funkcije, imenovane `copy2DArray`, ki za parameter sprejme 2D celoštevilsko matriko, imenovano **original**. Ko definiramo funkcijo, nato ustvarimo novo 2D matriko, imenovano **copy**, z enako dolžino kot izvirna matrika. Nato uporabimo zanko for za ponavljanje elementov izvirne matrike in njihovo kopiranje v novo matriko z uporabo metode `Arrays.copyOf()` iz knjižnice `java.util.Arrays`. Ta metoda ustvari globoko kopijo podnizov. Na koncu vrnemo kopijo 2D matrike.
Razumevanje 2D nizov
V Javi je **2D niz** v bistvu niz nizov. Lahko si ga predstavljamo kot tabelo z vrsticami in stolpci. Do elementov lahko dostopate z uporabo dveh indeksov: enega za vrstico in drugega za stolpec. Pri delu z 2D nizi v Javi je bistveno, da spremljate oba indeksa, da lahko pravilno dostopate do podatkov in jih upravljate.
- 2D niz je ustvarjen z naslednjo sintakso:
`dataType[][] arrayName = new dataType[rowSize][columnSize];` - Do elementov v 2D-matriki lahko dostopate z dvema indeksoma: `imematrike[vrstica][stolpec];`
- Ponavljanje skozi 2D polje običajno vključuje ugnezdene zanke.
Pred nadaljnjim potopom v kopirajte niz v 2D, je pomembno razumeti, zakaj je bistveno ustvariti globoke kopije podnizov. Plitka kopija bi kopirala samo sklice na podmatrike, vse spremembe izvirnika pa bi prav tako vplivale na kopijo. Z ustvarjanjem globokih kopij zagotovimo, da spremembe v eni matriki ne vplivajo na drugo.
Knjižnica Java.util.Arrays
V naši rešitvi smo uporabili knjižnico `java.util.Arrays`, ki nudi uporabne pomožne metode za delo z nizi. Za specifično težavo kopiranja 2D matrike smo uporabili metodo `Arrays.copyOf()` za ustvarjanje globokih kopij podmatrik.
- Metoda `Arrays.copyOf()` ustvari globoko kopijo izvirne matrike. Zajema dva parametra: izvirno matriko in dolžino nove matrike.
- Druge uporabne metode v tej knjižnici vključujejo `Arrays.fill()`, `Arrays.sort()` in `Arrays.binarySearch()`.
Skratka, kopiranje 2D matrike v Javi zahteva globoko kopijo, da se prepreči, da bi spremembe izvirne matrike vplivale na kopijo. Predstavili smo rešitev z uporabo metode `Arrays.copyOf()` iz knjižnice `java.util.Arrays`, ustvarjena funkcija pa je učinkovita in enostavna za razumevanje. Z našim globljim razumevanjem 2D matrik, knjižnice Java.util.Arrays in manipulacije matrik se lahko zdaj spopademo z drugimi izzivi z večjo samozavestjo in robustnejšimi rešitvami v Javi.