- - apmācība: daudzdimensiju masīvs Java

Apmācība: Daudzdimensiju masīvs Java

Java, tāpat kā vairums citu jaudīgu programmēšanas valodu, atbalsta daudzdimensionālus masīvus, piemēram, 2-dimensiju un 3-dimensiju masīvus. Iepriekš esam diskutējuši par darbu ar vienas dimensijas bloki Java. Šajā apmācībā apspriedīsimies par 2 un 3 dimensiju masīviem. Tie paši principi tiek piemēroti arī augstākas dimensijas blokiem.

2 dimensiju masīvs Java

Divdimensiju ieviešanai ir divi veidimasīvi. Daudzas valodas rezervē pietiekami lielu atmiņas bloku, lai turētu visus pilna, taisnstūra masīva elementus (rindu skaits reizināts ar kolonnu skaitu reizināts ar elementa lielumu). Java to nedara. Tā vietā Java veido daudzdimensiju masīvus no daudziem viendimensiju masīviem, tā saukto “masīvu masīvu” pieeju.

Divdimensiju bloki tiek definēti kā “masīvsmasīvu kopums ”. Tā kā masīva tips ir pirmās klases Java tips, mums var būt intu masīvs, virkņu masīvs vai objektu masīvs. Piemēram, intu masīvam būs tips int []. Līdzīgi mums var būt int [] [], kas apzīmē “intu masīvu masīvu”. Tiek teikts, ka šāds masīvs ir divdimensiju masīvs.

Šī komanda:

int[][] twodimArray = new int[3][4];

deklarē mainīgo, twodimArray, tipaint [] [], un tas inicializē šo mainīgo, lai atsauktos uz jaunizveidotu objektu. Šis objekts ir intu masīvu masīvs. Apzīmējums int [3] [4] norāda, ka masīvā twodimArray ir 3 intu masīvi un ka katrā no šiem masīviem ir 4 ints.

Tam ir pāris interesantas sekas: Rindas var būt dažāda lieluma. Arī katra rinda ir objekts (masīvs), ko var izmantot neatkarīgi.

Deklarācija

int[][] a1; // Declares, but doesn't allocate, 2-dim array.

Sadalīšana

Tāpat kā visos masīvos, jaunais atslēgvārds jāizmanto, lai masīvam piešķirtu atmiņu. Piemēram,

int[][] a1 = new int[3][4];

Vai:

int[][] a1;
a1 = new int[3][4];

Vai:

double[][] ID3 = {  {1.0, 0.0, 0.0},  {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}};

Tas piešķir int masīvu ar 3 rindām un 4 kolonnām. Tāpat kā visiem objektiem, vērtības tiek inicializētas līdz nullei (atšķirībā no vietējiem mainīgajiem, kas ir neinicializēti).

Tas faktiski piešķir 5 objektus: viendimensiju masīvu no 4 elementiem katrai rindai un viendimensiju masīvu no 3 elementiem, katram elementam norādot uz atbilstošo rindu masīvu.

Apstrāde

Bieži vien divdimensiju bloki tiek apstrādāti ar cilpām. Šajā piemērā ievērojiet, kā rindas tiek apstrādātas kā atsevišķi objekti.

Java programma

public class TwoDimArrayDemo{
public static void main(String[] args) {
int[][] twoDimArray = new int[3][4];
for (int i=0; i<twoDimArray.length; i++) {
for (int j=0; j<twoDimArray[i].length; j++) {
twoDimArray[i][j] = i;
System.out.print(" " + twoDimArray[i][j]);
}
System.out.println("");
}
}
}

Izeja

kods 2 dimensiju masīvam Java

3 dimensiju masīvs Java

Java programma

class Array3D{
public static void main(String args[]){
int[][][] a2 = new int[2][2][4];
for (int i = 0; i < a2.length; i++)
for (int j = 0; j < a2[i].length; j++)
for (int k = 0; k < a2[i][j].length; k++)
System.out.println("a2[" + i + "][" + j + "][" + k + "] = "+ a2[i][j][k]);
}
}

Izeja

kods trīsdimensiju masīvam Java

Koda un izvades skaidrojums

Daudzdimensiju masīvs tiek apstrādāts caurligzdotas cilpas. N-dimensiju masīvam ir nepieciešams n ligzdotu cilpu skaits. Kā jau teicu, katra masīva pozīcijas noklusējuma vērtība ir “0”. Tas ir pierādīts ar trīsdimensiju masīva izvadi.

Šeit atradīsiet norādes par vairāk noderīgām pamācībām un galīgām Java programmēšanas vadlīnijām.

Komentāri