Vectori

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”.

Share on


Echipa conspecte.com, crede cu adevărat că studenții care studiază devin următoarea generație de aventurieri și lideri cu gândire globală - și dorim ca cât mai mulți dintre voi să o facă!