Vectori
- Detalii
- Categorie: Programare Java
- Accesări: 7,319
Crearea unui vector
Crearea unui vector presupune realizarea urmatoarelor etape:
Declararea vectorului - Pentru a putea utiliza un vector trebuie, înainte de toate, sa-l declaram. Acest lucru se face prin expresii de forma:
Tip[] numeVector; sau Tip numeVector[];
ca în exemplele de mai jos:
int[] intregi; String adrese[];
Instantierea
Declararea unui vector nu implica si alocarea memoriei necesare pentru reţinerea elementelor. Operaţiunea de alocare a memoriei, numita si instantierea vectorului, se realizeaza întotdeauna prin intermediul operatorului
new
Instantierea unui vector se va face printr-o expresie de genul:
numeVector = new Tip[nrElemente];
unde
nrElemente
reprezinta numărul maxim de elemente pe care le poate avea vectorul. In urma instantierii vor fi alocati:
nrElemente
*
dimensiune (Tip)
octet necesari memorarii elementelor din vector, unde prin
dimensiune(Tip)
am notat numarul de octeti pe care se reprezinta tipul respectiv.
v = new int[10];
//aloca spatiu pentru 10 intregi: 40 octeti c = new char[10];
//aloca spatiu pentru 10 caractere: 20 octeti
Declararea si instantierea unui vector pot fi facute simultan astfel:
Tip[] numeVector = new Tip[nrElemente];
Iniţializarea (opţional) Dupa declararea unui vector, acesta poate fi iniţializat, adică elementele sale pot primi niste valori iniţiale, evident daca este cazul pentru asa ceva. In acest caz instantierea nu mai trebuie facuta explicit, alocarea memoriei facandu-se automat în functie de numa rul de elemente cu care se initializeaza vectorul.
String culori[] = {"Rosu", "Galben", "Verde"}; int []factorial = {1, 1, 2, 6, 24, 120};
Primul indice al unui vector este 0, deci pozitiile unui vector cu n elemente vor fi cuprinse între 0 si n — 1. Nu sunt permise construct de genul Tip numeVector[nrElemente], alocarea memoriei facandu-se doar prin intermediul opearatorului new.
int v[10];//ilegal int v[] = new int[10]; //corect
Tablouri multidimensionale
In Java tablourile multidimensionale sunt de fapt vectori de vectori. De exemplu, crearea si instantierea unei matrici vor fi realizate astfel:
Tip matrice[][] = new Tip[nrLinii] [nrColoane];
matrice[i]
este linia i a matricii si reprezinta un vector cu
nrColoane
elemente iar
matrice [i][j]
este elementul de pe linia i si coloana j.
Dimensiunea unui vector
Cu ajutorul variabilei length se poate afla numarul de elemente al unui vector.
int []a = new int[5]; // a.length are valoarea 5 int m[] [] = new int[5][10] ; // m[0].length are valoarea 10
Pentru a întelege modalitatea de folosire a lui length trebuie mentionat că fiecare vector este de fapt o instanta a unei clase iar length este o variabila publică a acelei clase, în care este retinut numarul maxim de elemente al vectorului.
Copierea vectorilor
Copierea elementelor unui vector a într-un alt vector b se poate face, fie element cu element, fie cu ajutorul metodei System.arraycopy, ca în exemplele de mai jos. Dupa cum vom vedea, o atribuire de genul b = a are alta semnificaţie decat copierea elementelor lui a în b si nu poate fi folosita în acest scop.
int a[] = {1, 2, 3, 4}; int b[] = new int[4]; // Varianta 1 for(int i=0; i<a.length; i++) b[i] = a[i]; // Varianta 2 System.arraycopy(a, 0, b, 0, a.length); // Nu are efectul dorit b = a;
Sortarea vectorilor - clasa Arrays
In Java s-a pus un accent deosebit pe implementarea unor structuri de date si algoritmi care sa simplifice proceseul de crearea a unui algoritm, programatorul trebuind sa se concentreze pe aspectele specifice problemei abordate. Clasa java.util.Arrays oferă diverse metode foarte utile în lucrul cu vectori cum ar fi:
-
sort - sorteaza ascendent un vector, folosind un algoritm de tip QuickSort performant, de complexitate O(nlog(n)).
nt v[]={3, 1, 4, 2}; java.util.Arrays.sort(v); // Sorteaza vectorul v // Acesta va deveni {1, 2, 3, 4}
-
equals - testarea egalităţii valorilor a doi vectori (au aceleaşi număr de elemente şi pentru fiecare indice valorile corespunzatoare din cei doi vectori sunt egale)
-
fill - atribuie fiecarui element din vector o valoare specificata.
Vectori cu dimensiune variabila si eterogeni
Implementari ale vectorilor cu număr variabil de elemente sunt oferite de clase specializate cum ar fi Vector sauArrayList din pachetul java.util. Astfel de obiecte descriu vectori eterogeni, ale căror elemente au tipul Object, si vor fi studiat în capitolul ’’Colecfii”.