Lucrul cu Array-uri în Java

Dacă un program trebuie să funcționeze cu un număr de valori de același tip de date, puteți declara o variabilă pentru fiecare număr. De exemplu, un program care afișează numere de loterie:

int loterieNumber1 = 16;
int loterieNumber2 = 32;
int loterieNumber3 = 12;
int loterieNumber4 = 23;
int loterieNumber5 = 33;
int loterieNumber6 = 20;

O modalitate mai elegantă de a trata valorile care pot fi grupate este utilizarea unui tablou. Un tablou este un container care deține un număr fix de valori ale unui tip de date. În exemplul de mai sus, numerele loteriei pot fi grupate într-un tablou int:

int [] lotteryNumbers = 16,32,12,23,33,20; 

Gândiți-vă la un tablou ca la un rând de căsuțe. Numărul de casete din tablă nu se poate modifica. Fiecare casetă poate reține o valoare atât timp cât este de același tip de date ca și valorile conținute în celelalte casete. Puteți căuta în interiorul unei cutii pentru a vedea ce valoare conține sau înlocuiți conținutul căsuței cu o altă valoare. Când vorbim despre tablouri, căsuțele se numesc elemente.

Declarând și inițializând o matrice

Declarația de declarație pentru un tablou este similară cu cea utilizată pentru a declara orice altă variabilă. Conține tipul de date urmat de numele tabloului - singura diferență constă în includerea parantezelor pătrate lângă tipul de date:

int [] intArray;
float [] floatArray; 
char [] charArray;

Declarațiile de declarație de mai sus spun compilatorului că

intArray
variabilă este o serie de
Ints
,
floatArray
este o serie de
flotoare
și
charArray
este o serie de carari. Ca orice variabilă, ele nu pot fi utilizate până când nu a fost inițializată, atribuindu-i o valoare. Pentru un tablou, alocarea unei valori unui tablou trebuie să definească dimensiunea unui tablou:
intArray = int nou [10]; 

Numărul din paranteze definește câte elemente deține tabloul. Instrucțiunea de atribuire de mai sus creează un tablou int cu zece elemente. Desigur, nu există niciun motiv pentru care declarația și atribuirea nu se pot întâmpla într-o declarație:

float [] floatArray = new float [10]; 

Schițele nu sunt limitate la tipurile de date primitive. Puteți crea imagini de obiecte:

String [] nume = new String [5]; 

Folosind o matrice

După ce un tablou a fost inițializat, elementele pot avea valori atribuite acestora utilizând indexul tabloului. Indicele definește poziția fiecărui element din tablou. Primul element este la 0, al doilea element la 1 și așa mai departe. Este important să rețineți că indicele primului element este 0. Este ușor să ne gândim că, deoarece un tablou are zece elemente că indicele este de la 1 la 10 în loc de la 0 la 9. De exemplu, dacă ne întoarcem la loterie exemplu de numere putem crea un tablou care conține 6 elemente și să atribuim numerele de loterie elementelor:

int [] lotteryNumbers = int nou [6];
loterieNumeri [0] = 16;
loterieNumeri [1] = 32;
loterieNumeri [2] = 12;
loterieNumeri [3] = 23;
loterieNumeri [4] = 33;
loterieNumeri [5] = 20;

Există o comandă rapidă pentru completarea elementelor dintr-un tablou prin introducerea valorilor pentru elementele din declarația de declarație:

int [] lotteryNumbers = 16,32,12,23,33,20;
String [] names = "John", "James", "Julian", "Jack", "Jonathon";

Valorile pentru fiecare element sunt plasate în interiorul unei perechi de paranteze cretate. Ordinea valorilor determină ce element i se atribuie valoarea începând cu poziția indexului 0. Numărul de elemente din tablou este determinat de numărul de valori din interiorul parantezelor cretate.

Pentru a obține valoarea unui element se folosește indexul său:

System.out.println ("Valoarea primului element este" + lotteryNumbers [0]); 

Pentru a afla câte elemente are un câmp folosind câmpul lungime:

System.out.println ("tabloul lotteryNumbers are" + lotteryNumbers.length + "elemente"); 

Notă: O greșeală obișnuită atunci când folosiți metoda lungimii este să uitați este să folosiți valoarea lungimii ca poziție de index. Aceasta va duce întotdeauna la o eroare, deoarece pozițiile indexului unui tablou sunt de la 0 la lungime - 1.

Arrayuri multidimensionale

Matricele la care ne-am uitat până acum sunt cunoscute sub numele de tablouri unidimensionale (sau unidimensionale). Aceasta înseamnă că au doar un rând de elemente. Cu toate acestea, matricile pot avea mai multe dimensiuni. Un multidimensional este de fapt un tablou care conține tablouri:

int [] [] lotteryNumbers = 16,32,12,23,33,20, 34,40,3,11,33,24; 

Indicele pentru un tablou multidimensional este format din două numere:

System.out.println ("Valoarea elementului 1,4 este" + lotteryNumbers [1] [4]); 

Deși lungimea tablelor conținute într-un tablou multidimensional nu trebuie să fie aceeași lungime:

String [] [] nume = String nou [5] [7]; 

Copierea unei matrici

Pentru a copia un tablou, cel mai simplu mod este să utilizați

arraycopy
metoda clasei System.
arraycopy
metoda poate fi utilizată pentru a copia toate elementele unui tablou sau o subsecțiune a acestora. Există cinci parametri trecuți la
 arraycopy
metoda - tabloul original, poziția indexului pentru a începe copierea unui element din, noul tablou, poziția indexului pentru a începe să insereze, numărul de elemente de copiat:
public static vid vid arraycopy (Obiect src, int srcPos, Obiect dest, int destPos, int lungime) 

De exemplu, pentru a crea un nou tablou care conține ultimele patru elemente ale unui

int 
matrice:
int [] lotteryNumbers = 16,32,12,23,33,20;
int [] newArrayNumbers = new int [4];
System.arraycopy (lotteryNumbers, 2, newArrayNumbers, 0, 4);

Deoarece matricile au o lungime fixă,

arraycopy
metoda poate fi un mod util de a modifica dimensiunea unui tablou.

Pentru a vă cunoaște mai multe despre tablouri, puteți afla despre manipularea matrițelor folosind clasa Arrays și realizarea de matrice dinamice (adică matricile când numărul de elemente nu este un număr fix) folosind clasa ArrayList.