
Ang solusyon sa problema ng pagkopya ng 2D array ay hindi kasing tapat ng pagkopya ng 1D array dahil ang pagkopya lang ng mga sanggunian sa mga panloob na array ay hindi gagawa ng malalim na mga kopya ng mga subarray mismo. Mayroong ilang mga diskarte upang malutas ang problemang ito, at tatalakayin natin ang isang ganoong paraan nang detalyado, isang hakbang-hakbang na pagsusuri ng code, at pagpapatupad nito.
Una, gumawa tayo ng function na kumukopya ng 2D array:
pampublikong static int[][] copy2DArray(int[][] orihinal) {
int[][] kopya = bagong int[original.length][];
para sa (int i = 0; i < original.length; i++) { copy[i] = Arrays.copyOf(original[i], original[i].length); } ibalik ang kopya; } [/code] Sa code sa itaas, magsisimula tayo sa pamamagitan ng pagtukoy ng function na tinatawag na `copy2DArray` na kumukuha ng 2D integer array, na pinangalanang **original**, bilang parameter nito. Pagkatapos tukuyin ang function, gumawa kami ng bagong 2D array, na tinatawag na **copy**, na may parehong haba ng orihinal na array. Pagkatapos ay gagamit kami ng for loop para umulit sa mga elemento ng orihinal na array at kopyahin ang mga ito sa bagong array gamit ang `Arrays.copyOf()` na paraan mula sa `java.util.Arrays` library. Lumilikha ang paraang ito ng malalim na kopya ng mga subarray. Sa wakas, ibinabalik namin ang kopya ng 2D array.
Pag-unawa sa 2D Arrays
Sa Java, ang **2D array** ay mahalagang hanay ng mga array. Maaari itong mailarawan bilang isang talahanayan na may mga row at column. Maaaring ma-access ang mga elemento gamit ang dalawang indeks: isa para sa row, at isa para sa column. Kapag nagtatrabaho sa mga 2D array sa Java, mahalagang subaybayan ang parehong mga indeks, upang ma-access at mamanipula mo nang tama ang data.
- Ang isang 2D array ay nilikha gamit ang sumusunod na syntax:
`dataType[][] arrayName = bagong dataType[rowSize][columnSize];` - Maaaring ma-access ang mga elemento sa isang 2D array gamit ang dalawang indeks: `arrayName[row][column];`
- Ang pag-ulit sa pamamagitan ng isang 2D array ay karaniwang nagsasangkot ng mga nested loop.
Bago sumisid pa sa kopyahin ang array sa 2D, mahalagang maunawaan kung bakit mahalagang gumawa ng malalalim na kopya ng mga subarray. Kokopyahin lamang ng mababaw na kopya ang mga sanggunian sa mga subarray, at ang anumang pagbabagong ginawa sa orihinal ay makakaapekto rin sa kopya. Sa pamamagitan ng paggawa ng malalim na mga kopya, tinitiyak namin na ang mga pagbabago sa isang array ay hindi makakaapekto sa isa pa.
Java.util.Arrays Library
Sa aming solusyon, ginamit namin ang library ng `java.util.Arrays`, na nagbibigay ng mga kapaki-pakinabang na pamamaraan ng utility para sa pagtatrabaho sa mga array. Para sa partikular na problema sa pagkopya ng 2D array, ginamit namin ang `Arrays.copyOf()` na paraan upang lumikha ng malalalim na kopya ng mga subarray.
- Ang paraan ng `Arrays.copyOf()` ay lumilikha ng malalim na kopya ng orihinal na array. Kailangan ng dalawang parameter: ang orihinal na array at ang haba ng bagong array.
- Kasama sa iba pang mga kapaki-pakinabang na pamamaraan sa library na ito ang `Arrays.fill()`, `Arrays.sort()`, at `Arrays.binarySearch()`.
Sa konklusyon, ang pagkopya ng 2D array sa Java ay nangangailangan ng malalim na kopya upang maiwasan ang mga pagbabago sa orihinal na array na maapektuhan ang kopya. Nagpakita kami ng solusyon gamit ang pamamaraang `Arrays.copyOf()` mula sa library ng `java.util.Arrays`, at parehong mahusay at madaling maunawaan ang ginawang function. Sa aming mas malalim na pag-unawa sa mga 2D array, library ng Java.util.Arrays, at pagmamanipula ng array, maaari na nating harapin ang iba pang mga hamon nang may higit na kumpiyansa at mas matatag na mga solusyon sa Java.