1. Matrice zimțate
Ca programator Java, nu numai că puteți schimba rândurile unei matrice bidimensionale, ci și să construiți o matrice după cum doriți.
Să presupunem că doriți ca primul rând al unui tablou bidimensional să aibă lungimea de 10
, și doriți ca lungimea celui de-al doilea rând să fie 50
. putem face asta? Da putem.
În primul rând, trebuie să creăm un „container de containere” - acesta este primul tablou, care va stoca referințe la matrice de rânduri. Asa se face:
int[][] name = new int[height][];
Pur și simplu omiteți a doua dimensiune , iar mașina Java creează un container de containere. Iată ce va fi în memorie după executarea acestui cod:
Și, bine, știți deja cum să creați tablouri unidimensionale 🙂
Iată cum va arăta codul rezultat:
|
Matrice bidimensională Rândul zero este o matrice de 10 elemente Primul rând este o matrice de 50 elemente |
Tocmai am creat așa-numita „ matrice zimțată ”.
Și dacă acum vrem să afișăm toate elementele acestei matrice pe ecran, atunci proprietatea matricei length
va fi utilă: la urma urmei, lungimile rândurilor matricei sunt diferite.
Apropo, cum găsiți lungimea unui „container de containere” în exemplul nostru? Este, de asemenea, un obiect matrice, ceea ce înseamnă că are o lungime. Răspunsul corect este matrix.length
.
Ce zici de matricele care cuprind rândurile noastre?matrix[0].length
2. Lucrul cu o matrice bidimensională
Să presupunem că doriți să afișați o matrice bidimensională. Cum faci asta?
Codul nostru va arăta cam așa:
|
Creați o matrice Umpleți matricea cu valori Bucla exterioară care iterează peste rândurile matricei. Bucla interioară care iterează peste celulele unui singur rând. |
Aveți nevoie de două bucle imbricate. Pe primul îl numim exterior , iar pe al doilea - interior .
În bucla exterioară ( i
variabila), trecem secvenţial prin toate rândurile (matricele) care alcătuiesc matricea noastră bidimensională. Fiecare valoare a i
corespunde unui rând cu acel indice.
În bucla interioară ( j
variabila), iterăm peste toate celulele din rânduri. Datorită buclei interioare, pe ecran va fi afișat un rând, care constă din valorile unui tablou unidimensional.
Iată ce va fi afișat:
Un rând al matricei este procesat |
|
Sunt procesate două rânduri ale matricei |
|
Sunt procesate trei rânduri ale matricei |
|
3. Matrice multidimensionale
Încă un fapt interesant despre matrice, unul pe care probabil l-ați ghicit deja. Dacă puteți face o matrice bidimensională, atunci puteți face o matrice tridimensională?
Da, puteți crea o matrice de orice dimensiune. Astfel de matrice sunt numite „multidimensionale”.
Doar pentru distracție, să creăm o matrice multidimensională care are 4 dimensiuni.
int[][][][] matrix = new int[2][3][4][5];
Acest cod este prea simplu, nu-i așa?
Ce se întâmplă dacă îl creați manual?
int[][][][] matrix;
matrix = new int[2][][][]; // Create a 2-element array of references to references to references
for (int i = 0; i < matrix.length; i++)
{
matrix[i] = new int[3][][]; // Create a 3-element array of references to references
for (j = 0; j < matrix[i].length; j++)
{
matrix[i][j] = new int[4][]; // Create a 4-element array of references
for (k = 0; k < matrix[i][j].length; k++)
matrix[i][j][k] = new int[5]; // Create 5-element arrays of integers
}
}
Și asta înseamnă doar crearea matricei! Atunci trebuie să lucrezi cu el cumva.
Sarcină bonus: scrieți codul care afișează toate valorile într-o matrice tridimensională.
GO TO FULL VERSION