|
||||||||||||||||||||||||
In limbajul de programare Java, un tablou multidimensional este pur si simplu un vector ale carui componente sunt tot vectori. Din acest punct de vedere, Java nu se aseamana cu Csau Fortran. O consecinta a acestui aspect este ca vectorii elemente pot varia ca lungime, dupa cum se poate observa in urmatorul program MultiDimArrayDemo:
1 2 3 4 5 6 7 8 |
<span class="hl-reserved">class</span> <span class="hl-identifier">MultiDimArrayDemo</span> <span class="hl-brackets">{</span> <span class="hl-reserved">public</span> static void <span class="hl-identifier">main</span><span class="hl-brackets">(</span><span class="hl-identifier">String</span><span class="hl-brackets">[</span><span class="hl-brackets">]</span> <span class="hl-identifier">args</span><span class="hl-brackets">)</span> <span class="hl-brackets">{</span> <span class="hl-identifier">String</span><span class="hl-brackets">[</span><span class="hl-brackets">]</span><span class="hl-brackets">[</span><span class="hl-brackets">]</span> <span class="hl-identifier">names</span><span class="hl-code"> = </span><span class="hl-brackets">{</span><span class="hl-brackets">{</span><span class="hl-quotes">"</span><span class="hl-string">Mr. </span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">Mrs. </span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">Ms. </span><span class="hl-quotes">"</span><span class="hl-brackets">}</span><span class="hl-code">, </span><span class="hl-brackets">{</span><span class="hl-quotes">"</span><span class="hl-string">Smith</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">Jones</span><span class="hl-quotes">"</span><span class="hl-brackets">}</span><span class="hl-brackets">}</span><span class="hl-code">; </span><span class="hl-identifier">System</span><span class="hl-code">.</span><span class="hl-identifier">out</span><span class="hl-code">.</span><span class="hl-identifier">println</span><span class="hl-brackets">(</span><span class="hl-identifier">names</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code"> + </span><span class="hl-identifier">names</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">//</span><span class="hl-comment">Mr. Smith</span> <span class="hl-identifier">System</span><span class="hl-code">.</span><span class="hl-identifier">out</span><span class="hl-code">.</span><span class="hl-identifier">println</span><span class="hl-brackets">(</span><span class="hl-identifier">names</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code"> + </span><span class="hl-identifier">names</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">//</span><span class="hl-comment">Ms. Jones</span> <span class="hl-brackets">}</span> <span class="hl-brackets">}</span> |
Codul de mai sus va afisa:
1 2 |
<span class="hl-code">Mr. Smith Ms. Jones</span> |
In sfarsit, dimensiunea unui vector poate fi determinata cu ajutorul metodei length. Astfel, instructiunea:
1 |
<span class="hl-identifier">System</span><span class="hl-code">.</span><span class="hl-identifier">out</span><span class="hl-code">.</span><span class="hl-identifier">println</span><span class="hl-brackets">(</span><span class="hl-identifier">anArray</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">)</span><span class="hl-code">;</span> |
va afisa dimensiunea vectorului anArray.
Copierea vectorilor
Clasa System detine o metoda arraycopy ce poate fi utilizata pentru copierea eficienta dintr-un vector in altul. Prototipul functiei este:
1 2 3 4 5 |
<span class="hl-reserved">public</span> static void <span class="hl-identifier">arraycopy</span><span class="hl-brackets">(</span><span class="hl-identifier">Object</span> <span class="hl-identifier">src</span><span class="hl-code">, </span>int <span class="hl-identifier">srcPos</span><span class="hl-code">, </span><span class="hl-identifier">Object</span> <span class="hl-identifier">dest</span><span class="hl-code">, </span>int <span class="hl-identifier">destPos</span><span class="hl-code">, </span>int <span class="hl-identifier">length</span><span class="hl-brackets">)</span> |
Cei doi parametri de tip Object reprezinta vectorul din care (src) si vectorul in care (dest) se copiaza. Cele trei argumente int precizeaza pozitia de start din vectorul sursa (srcPos), pozitia de start din vectorul destinatie (destPos) si numarul elementelor ce trebuiesc copiate (length).
Urmatorul program, ArrayCopyDemo, declara un array de elemente char, scriind pe litere cuvantul „decofeinizat”, apoi utilizeaza arraycopy pentru a copia o parte din acest vector intr-un al doilea vector:
1 2 3 4 5 6 7 8 9 10 |
<span class="hl-reserved">class</span> <span class="hl-identifier">ArrayCopyDemo</span> <span class="hl-brackets">{</span> <span class="hl-reserved">public</span> static void <span class="hl-identifier">main</span><span class="hl-brackets">(</span><span class="hl-identifier">String</span><span class="hl-brackets">[</span><span class="hl-brackets">]</span> <span class="hl-identifier">args</span><span class="hl-brackets">)</span> <span class="hl-brackets">{</span> char<span class="hl-brackets">[</span><span class="hl-brackets">]</span> <span class="hl-identifier">copyFrom</span><span class="hl-code"> = </span><span class="hl-brackets">{</span> <span class="hl-quotes">'</span><span class="hl-string">d</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">e</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">c</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">o</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">f</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">e</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">i</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">n</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">i</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">z</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">a</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">t</span><span class="hl-quotes">'</span> <span class="hl-brackets">}</span><span class="hl-code">; </span>char<span class="hl-brackets">[</span><span class="hl-brackets">]</span> <span class="hl-identifier">copyTo</span><span class="hl-code"> = </span><span class="hl-reserved">new</span> char<span class="hl-brackets">[</span><span class="hl-number">7</span><span class="hl-brackets">]</span><span class="hl-code">; </span><span class="hl-identifier">System</span><span class="hl-code">.</span><span class="hl-identifier">arraycopy</span><span class="hl-brackets">(</span><span class="hl-identifier">copyFrom</span><span class="hl-code">, </span><span class="hl-number">2</span><span class="hl-code">, </span><span class="hl-identifier">copyTo</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">10</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-identifier">System</span><span class="hl-code">.</span><span class="hl-identifier">out</span><span class="hl-code">.</span><span class="hl-identifier">println</span><span class="hl-brackets">(</span><span class="hl-reserved">new</span> <span class="hl-identifier">String</span><span class="hl-brackets">(</span><span class="hl-identifier">copyTo</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-brackets">}</span> <span class="hl-brackets">}</span> |
Rezultatul acestui program este:
1 |
<span class="hl-code">cofeinizat</span> |
Rezumat
Un vector este un obiect container care detine un numar fix de valori de un singur tip. Lungimea unui vector este stabilita la crearea acestuia. Dupa creare, lungimea sa este fixata.