Diferența dintre Array și ArrayList

Ce este Array și ArrayList?

Atât Array cât și ArrayList sunt structuri de date bazate pe index care sunt adesea folosite în programele Java. Din punct de vedere conceptual, ArrayList este susținut intern de matrice, însă înțelegerea diferenței dintre cele două este cheia pentru a deveni un mare dezvoltator Java. Este chiar pasul de bază pentru început, mai ales pentru începătorii care tocmai au început să codifice. În timp ce ambele sunt folosite pentru a stoca elemente în Java, care pot fi primitive sau obiecte, ele au cota lor echitabilă de diferențe în ceea ce privește funcționalitatea și performanța. Diferența majoră dintre cele două este că matricea este statică, în timp ce ArrayList este dinamic în natură. Acest articol compară cele două aspecte diferite, astfel încât să puteți alege una pe cealaltă.

Diferența dintre Array și Arraylist

  1. resizable

Una dintre diferențele majore și observabile dintre cele două structuri de date este aceea că Array este statică în natură, ceea ce înseamnă că este un tip de date cu lungime fixă, în timp ce ArrayList este dinamic în natură, ceea ce înseamnă că este o structură de date cu lungime variabilă. În termeni tehnici, lungimea matricei nu poate fi modificată sau modificată după crearea obiectului Array. Acesta conține colecția secvențială de elemente de același tip de date. Arrays din Java funcționează diferit decât funcționează în C / C ++. ArrayList, pe de altă parte, se poate redimensiona însăși, iar matricele pot crește așa cum au nevoie. Deoarece este o structură de date dinamică, elementele pot fi adăugate și eliminate din listă.

  1. Generice

Nu puteți crea matrice de clase generice de interfețe în Java, astfel încât arraii și generica să nu meargă mână în mână, făcând imposibilă crearea Generic Array pentru un singur motiv de bază că matricele sunt covariante, în timp ce genericele sunt invariabile. În timp ce Array este o structură de date cu lungime fixă, ea conține obiecte din aceeași clasă sau primitive de tipul specific de date. Deci, dacă încercați să stocați alt tip de date diferit de cel specificat în timpul creării obiectului Array, aruncați pur și simplu "ArrayStoreException". ArrayList, pe de altă parte, sprijină Generics pentru a asigura siguranța tipului.

  1. primitive

Tipurile de date primitive, cum ar fi int, double, long și char nu sunt permise în ArrayList. Mai degrabă, obiectele și primitivele nu sunt considerate obiecte în Java. Arrays, pe de altă parte, pot deține primitive și obiecte din Java, deoarece este una dintre cele mai eficiente structuri de date din Java pentru stocarea obiectelor. Este un tip de date agregat care este proiectat să păstreze obiecte care pot fi de același tip sau de același tip.

  1. Lungime

Pentru a obține lungimea matricei, codul trebuie să acceseze atributul de lungime, deoarece trebuie să cunoaștem lungimea pentru a efectua operații pe Array. În timp ce ArrayList folosește metoda size () pentru a determina dimensiunea ArrayList, este destul de diferită de determinarea lungimii Array-ului. Atributul metodei size () determină numărul de elemente dintr-un ArrayList, care, la rândul său, este capacitatea ArrayList.

De exemplu:

public class ArrayLengthTest

public static void principal (String [] args)

ArrayList arrList = nou ArrayList ();

String [] items = "One", "Two", "Three";

pentru (String str: items)

arrList.add (str);

int dimensiune = items.size ();

System.out.println (dimensiune);

  1. Punerea în aplicare

Array este o componentă de programare nativă din Java care este creată dinamic și utilizează operatorul de atribuire pentru a ține elemente, în timp ce ArrayList utilizează atributul add () pentru a insera elemente. ArrayList este o clasă din cadrul de colectare din Java care utilizează un set de metode specificate pentru a accesa și a modifica elementele. Dimensiunea unui ArrayList poate fi crescută sau scăzută dinamic. Elementele dintr-o matrice sunt stocate în locația de memorie contiguă, iar mărimea acesteia rămâne statică.

  1. Performanţă

În timp ce ambele structuri de date oferă un fel de performanță similară cu ArrayList este susținută de Arrays, una are puțină margine față de alta, mai ales în ceea ce privește timpul procesorului și utilizarea memoriei. Să presupunem că, dacă știți dimensiunea matricei, probabil că veți merge cu ArrayList. Cu toate acestea, iterarea peste un Array este un pic mai rapid decât iterarea peste un ArrayList. Dacă programul implică un număr mare de primitive, un matrice va funcționa semnificativ mai bine decât ArrayList, atât în ​​ceea ce privește timpul cât și memoria. Arrays sunt un limbaj de programare la nivel scăzut care poate fi utilizat în implementările de colectare. Cu toate acestea, performanța poate varia în funcție de operația pe care o efectuați.

Array Vs. ArrayList

mulțime ArrayList
Arra este o structură de date cu lungime fixă ​​a cărei lungime nu poate fi modificată odată ce a fost creat obiectul array. ArrayList este dinamic în natură, ceea ce înseamnă că se poate redimensiona în sine pentru a crește atunci când este necesar.
Dimensiunea unei matrice rămâne statică pe tot parcursul programului. Dimensiunea unui ArrayList poate crește dinamic în funcție de sarcină și capacitate.
Utilizează operatorul de atribuire pentru a stoca elementele. Utilizează atributul add () pentru a insera elemente.
Poate conține primitive, precum și obiecte de același tip sau tip de date diferite. Primitivele nu sunt permise în ArrayList. Poate conține numai tipuri de obiecte.
Arrays și generice nu merg mână în mână. Generic este permis în ArrayList.
Arrays pot fi multidimensionale. ArrayList este unic dimensional.
Este o componentă de programare nativă în care elementele sunt stocate în locații de memorie contigue. Este o clasă din cadrul colecțiilor din Java, unde obiectele nu sunt stocate niciodată în locații învecinate.
Variabila lungime este utilizată pentru a determina lungimea matricei. Metoda Size () este utilizată pentru a determina dimensiunea fișierului ArrayList.
Are mai puțină memorie decât ArrayList pentru a stoca elemente sau obiecte specificate. Are mai multă memorie decât matricea pentru a stoca obiecte.
Iterarea peste o matrice este mai rapidă decât iterarea peste un ArrayList. Iterarea unui ArrayList este semnificativ mai lentă în termeni de performanță.

rezumat

În timp ce unii ar putea crede că implementarea unor arhive într-un program poate obține rezultate mai rapide decât a face același lucru cu ArrayLists din simplul motiv că matricea este o structură de date la nivel scăzut, performanța poate varia în funcție de operațiunile pe care le efectuați. Ei bine, lungimea unui Array este fixă, în timp ce mărimea lui ArrayList poate fi crescută sau scăzută dinamic, astfel încât ArrayList are o margine puțin peste Array din punct de vedere al funcționalității. Cu toate acestea, în ciuda diferențelor, aceștia împărtășesc și unele asemănări. Ambele sunt structuri de date bazate pe indexuri în Java care vă permit să stocați obiecte și ambele permit valori nulă, precum și duplicate. Ei bine, dacă știți dimensiunea obiectelor în prealabil, ar trebui să mergeți cu o matrice și, dacă nu sunteți sigur de dimensiune, mergeți cu ArrayList.