Arrays vs Arraylists
Tablourile sunt structura de date cea mai frecvent utilizată pentru a stoca o colecție de elemente. Majoritatea limbajelor de programare oferă metode pentru a declara cu ușurință tablouri și a accesa elementele din tablouri. Un arraylist poate fi văzut ca o matrice dinamică, care poate crește în dimensiune. Din acest motiv, programatorul nu trebuie să cunoască mărimea listei de arraylist atunci când o definește.
Ce sunt matricele?
Afișat în figura 1, este o bucată de cod utilizată de obicei pentru a declara și atribui valori unei matrice. Figura 2 descrie cum ar arăta o matrice în memorie.
valori [0] = 100; valori [1] = 101; valori [2] = 102; valori [3] = 103; valori [4] = 104; |
Figura 1: Cod pentru declararea și atribuirea valorilor unui tablou
100 | 101 | 102 | 103 | 104 |
Index: 0 | 1 | 2 | 3 | 4 |
Figura 2: Matrice stocată în memorie
Deasupra codului, definește o matrice care poate stoca 5 numere întregi și sunt accesate folosind indici de la 0 la 4. O proprietate importantă a matricei este că, întreaga matrice este alocată ca un singur bloc de memorie și fiecare element primește propriul spațiu în matrice. Odată ce o matrice este definită, dimensiunea sa este fixă. Deci, dacă nu sunteți sigur de dimensiunea matricei la momentul compilării, va trebui să definiți o matrice suficient de mare pentru a fi în partea sigură. Dar, de cele mai multe ori, vom folosi de fapt un număr mai mic de elemente decât le-am alocat. Deci, o cantitate considerabilă de memorie este de fapt irosită. Pe de altă parte, dacă „matricea suficient de mare” nu este de fapt suficient de mare, programul s-ar bloca.
Ce sunt Arraylists?
Un arraylist poate fi văzut ca o matrice dinamică, care poate crește în dimensiune. Prin urmare, arraylists sunt ideali pentru a fi utilizați în situația în care nu știți dimensiunea elementelor necesare în momentul declarației. În Java, arraylistii pot deține numai obiecte, nu pot deține direct tipuri primitive (puteți pune tipurile primitive în interiorul unui obiect sau puteți utiliza clasele wrapper ale tipurilor primitive). În general, arraylists sunt furnizate cu metode pentru a efectua inserarea, ștergerea și căutarea. Complexitatea de timp pentru accesarea unui element este o (1), în timp ce inserarea și ștergerea au o complexitate de timp de o (n). În Java, arraylistele pot fi parcurse folosind bucle pentru fiecare, iteratoare sau pur și simplu folosind indicii.
Care este diferența dintre Array și Arraylists
Chiar dacă matricile și arrailistele sunt similare în sensul că ambele sunt folosite pentru a stoca colecții de elemente, acestea diferă prin modul în care sunt definite. Dimensiunea matricei trebuie dată când este definită o matrice, dar puteți defini un arraylist fără a cunoaște dimensiunea reală. Puteți adăuga elemente la un arraylist după ce acesta este definit și acest lucru nu este posibil cu matrice. Dar în Java, arraylists nu pot conține tipuri primitive, dar matrici pot fi folosite pentru a deține tipuri primitive. Dar dacă aveți nevoie de o structură de date care să îi poată varia dimensiunea, arraylist ar fi cea mai bună alegere.