In acest post vedem care este solutia la problema adaugarii unui element nou la un vector existent. Asa cum am vazut in Tutorial Java 6 – #4 Vectori, vectorii reprezinta obiecte prin care se gestioneaza o lista compacta de elemente omogene.
Deoarece lista de elemente reprezinta o zona de memorie compacta in Heap, raspunsul la problema, cum adaugam un element nou este ca NU se poate. Odata construit vectorul, cu un numar finit de elemente, spatiul alocat nu mai poate fi redimensionat.
Deci, nu se mai poate realoca spatiul sau mari spatiul deja alocat. Singura solutie pentru a adauga un element nou la un vector cu n:
-
definim un nou vector de dimensiune +1;
-
copiem cele n valori in noul vector;
-
ultimul element va fi initializat cu noua valoare;
-
vectorul va fi reinitializat cu adresa noii liste de valori
//vector initial
int[] oldArray = {1,2,3,4,5};
//valoare noua
int newValue = 10;
//construim noul vector
int[] newArray = new int[oldArray.length + 1];
//copiem valorile existent
for(int i=0;i < oldArray.length;i++)
newArray[i] = oldArray[i];
//adaugam valoarea noua
newArray[newArray.length-1] = newValue;
//copiem referinta noului vector
//vechiul vector va fi sters de Garbage Collector
oldArray = newArray;
Dacă programul necesită o mulţime de operaţiuni de adaugare, este mai bine să se utilizeze o structură de date care este mai eficient la adăugarea sau eliminarea de elemente. În Java, acest lucru ar putea fi colectia ArrayList (mai multe despre colecţiile într-un post nou - Tutorial Java 6 - Cuprins)