Arrays vs Arraylists
Arrays sunt structura de date cea mai frecvent utilizată pentru a stoca o colecție de elemente. Cele mai multe limbi de programare oferă metode pentru a declara cu ușurință matrice și elemente de acces în matrice. Un arrayist poate fi văzut ca o matrice dinamică, care poate crește în dimensiune. Din acest motiv, programatorul nu are nevoie să cunoască dimensiunea arrayistului atunci când o definește.
Ce sunt Arrays??
Afișată în figura 1, este o bucată de cod utilizată în mod obișnuit pentru a declara și a atribui valori unei matrice. Figura 2 prezintă modul în care ar arăta o matrice în memorie.
valori int [5]; valori [0] = 100; valori [1] = 101; valori [2] = 102; valori [3] = 103; valori [4] = 104; |
Figura 1: Cod pentru declararea și atribuirea valorilor unei matrice
100 | 101 | 102 | 103 | 104 |
Index: 0 | 1 | 2 | 3 | 4 |
Figura 2: Array stocat în memorie
Deasupra codului, definește un matrice care poate stoca 5 numere întregi și acestea sunt accesate folosind indicii 0 până la 4. O proprietate importantă a unei matrice este aceea că întregul matrice este alocat ca un singur bloc de memorie și fiecare element își are propriul spațiu în matrice . Odată ce o matrice este definită, dimensiunea acesteia 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 mai puține elemente decât am alocat. Deci, o cantitate considerabilă de memorie este de fapt pierdută. Pe de altă parte, dacă "matricea suficientă" nu este destul de mare, programul s-ar prăbuși.
Ce sunt arraiștii??
Un arrayist poate fi văzut ca o matrice dinamică, care poate crește în dimensiune. Prin urmare, arrayliștii sunt ideali pentru a fi utilizați în situații în care nu cunoașteți mărimea elementelor necesare în momentul declarației. În Java, arraiiștii pot să dețină doar obiecte, nu pot să dețină în mod direct tipuri primitive (puteți pune tipurile primitive în interiorul unui obiect sau utilizați clasele de tip wrapper ale tipurilor primitive). În general, arrailistii sunt prevăzute cu metode de efectuare a inserției, ștergerii și căutării. Complexitatea timpului de accesare a unui element este o (1), în timp ce inserarea și ștergerea are o complexitate de timp a o (n). În Java, arraiiștii pot fi traversați folosind bucle foreach, iteratori sau pur și simplu folosind indexurile.
Care este diferența dintre Arrays și Arraylists
Chiar dacă matricea și arrailistul sunt similare în sensul că ambele sunt folosite pentru a stoca colecții de elemente, acestea diferă în modul în care sunt definite. Dimensiunea matricei trebuie dată atunci când este definită o matrice, însă puteți defini un arraylist fără a cunoaște dimensiunea reală. Puteți adăuga elemente într-un arraylist după ce este definit și acest lucru nu este posibil cu matrice. Dar în Java, arraiiștii nu pot deține tipuri primitive, dar array-urile 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, arrailistul ar fi cea mai bună alegere.