Tako Array kot ArrayList sta indeksni podatkovni strukturi, ki se pogosto uporabljata v programih Java. Konceptno gledano ArrayList notranje podpirajo matrike, vendar je razumevanje razlike med tema ključ do tega, da postanete odličen Java razvijalec. To je povsem osnovni korak, še posebej začetniki, ki so pravkar začeli s kodiranjem. Medtem ko se oba uporabljata za shranjevanje elementov na Javi, ki so lahko bodisi primitivi bodisi predmeti, imata pravičen delež razlik v funkcionalnosti in zmogljivosti. Glavna razlika med obema je, da je Array statičen, medtem ko je ArrayList dinamične narave. Ta članek primerja oboje v različnih vidikih, tako da lahko izberete enega nad drugim.
Ena večjih in opaznih razlik med dvema podatkovnima strukturama je, da je Array statične narave, kar pomeni, da gre za podatkovni tip fiksne dolžine, medtem ko je ArrayList dinamične narave, kar pomeni, da gre za strukturo podatkov s spremenljivo dolžino. Tehnično gledano dolžine Array ni mogoče spremeniti ali spremeniti, ko je Array objekt ustvarjen. Vsebuje zaporedno zbirko elementov iste vrste podatkov. Nizi na Javi delujejo drugače, kot delujejo v C / C ++. ArrayList pa lahko spreminja velikost samega sebe in matrike lahko rastejo, kolikor potrebujejo. Ker gre za dinamično strukturo podatkov, je mogoče elemente dodati in odstraniti s seznama.
V Java ne morete ustvariti matrike generičnih razredov vmesnikov, tako da matriki in generiki ne gredo skupaj, zaradi česar ni mogoče ustvariti generičnega niza iz enega osnovnega razloga, da so matriki kovarijantni, medtem ko so generiki invariantni. Medtem ko je Array struktura podatkov s fiksno dolžino, vsebuje predmete istega razreda ali primitive določenega tipa podatkov. Torej, če poskušate med ustvarjanjem Array objekta shraniti drugačno vrsto podatkov, ki ni navedena, preprosto vrže "ArrayStoreException". Po drugi strani ArrayList podpira Generics, da bi zagotovil varnost tipa.
Primarni tipi podatkov, kot so int, double, long in char, v ArrayList niso dovoljeni. Raje drži predmete in primitivi se na Javi ne štejejo za predmete. Na drugi strani lahko v nizih vsebujejo primitive in predmete na Javi, ker je ena najbolj učinkovitih podatkovnih struktur na Javi za shranjevanje predmetov. Gre za združeni tip podatkov, ki je zasnovan za shranjevanje predmetov, ki so lahko enakega ali drugačnega tipa.
Da bi dobili dolžino matrike, mora koda dostopati do atributa dolžina, ker mora biti poznana dolžina za izvajanje operacij v Array. Medtem ko ArrayList za določitev velikosti ArrayList uporablja metodo size (), se precej razlikuje od določitve dolžine Array. Atribut metode size () določa število elementov v ArrayListu, kar pomeni zmogljivost ArrayList.
Za primer:
javni razred ArrayLengthTest
javni statični void main (String [] args)
ArrayList arrList = nov ArrayList ();
String [] items = “Eno”, “Dva”, “Tri”;
za (String str: items)
arrList.add (str);
int size = items.size ();
System.out.println (velikost);
Array je izvorna programska komponenta na Javi, ki se ustvarja dinamično in uporablja operater dodelitve za zadrževanje elementov, medtem ko ArrayList za dodajanje elementov uporablja atribut add (). ArrayList je razred iz zbirke okvira na Javi, ki uporablja nabor določenih metod za dostop in spreminjanje elementov. Velikost ArrayList se lahko dinamično poveča ali zmanjša. Elementi v matriki so shranjeni na neprekinjenem pomnilniškem mestu in njegova velikost ostane statična skozi celoten pomnilnik.
Medtem ko obe podatkovni strukturi zagotavljata podobne zmogljivosti, kot jih ArraList podpira Arrays, ima ena malo prednost pred drugo, predvsem glede časa CPU-ja in pomnilnika. Recimo, če veste velikost matrike, boste verjetno šli z ArrayList. Vendar je iteriranje nad Array nekaj hitrejšega kot iteriranje nad ArrayList. Če program vključuje veliko število primitivov, bo matrika izvedla bistveno bolje kot ArrayList, tako glede na čas in pomnilnik. Nizi so programski jezik na nizki ravni, ki se lahko uporablja pri izvedbah zbirk. Vendar pa se lahko učinkovitost razlikuje glede na operacijo, ki jo izvajate.
Niz | ArrayList |
Array je struktura podatkov s fiksno dolžino, katere dolžine ni mogoče spremeniti, ko je ustvarjen objekt matrike. | ArrayList je dinamične narave, kar pomeni, da lahko sam po sebi spremeni velikost rasti. |
Velikost matrike ostaja statična v celotnem programu. | Velikost ArrayList lahko dinamično raste, odvisno od obremenitve in zmogljivosti. |
Za shranjevanje elementov uporablja operater dodelitve. | Za vstavljanje elementov uporablja atribut add (). |
Vsebuje lahko primitivne snovi in predmete istega ali drugačnega tipa. | Primitivi v ArrayList niso dovoljeni. Vsebuje lahko samo vrste predmetov. |
Niz in generična oprema ne gresta z roko v roki. | Generika je dovoljena v ArrayListu. |
Nizi so lahko večrazsežni. | ArrayList je enodimenzionalen. |
Gre za izvorno programsko komponento, kjer so elementi shranjeni v sosednjih pomnilniških mestih. | To je razred iz Java zbirke, kjer predmeti nikoli niso shranjeni na sosednjih lokacijah. |
Za določitev dolžine matrike se uporablja spremenljivka dolžine. | Za določitev velikosti ArrayList se uporablja metoda size (). |
Za shranjevanje določenih elementov ali predmetov vzame manj pomnilnika kot ArrayList. | Za shranjevanje predmetov vzame več pomnilnika kot Array. |
Iteracija preko matrike je hitrejša kot ponovitev preko ArrayList. | Iteracija prek ArrayList je glede na delovanje bistveno počasnejša. |
Medtem ko nekateri morda mislijo, da lahko z uvajanjem nizov v program pride do rezultatov hitreje, kot bi to storili z ArrayLists, iz preprostega razloga, ker so matriki nizko raven podatkovne strukture, se lahko uspešnost razlikuje glede na operacijo, ki jo izvajate. No, dolžina Array je določena, medtem ko se velikost ArrayList lahko dinamično poveča ali zmanjša, tako da ima ArrayList malo prednosti nad Array glede funkcionalnosti. Kljub razlikam pa si delita tudi nekaj podobnosti. Oba sta na Javi temelječi podatkovni strukturi, ki omogočata shranjevanje predmetov in omogočata ničelne vrednosti in podvojence. No, če že prej poznate velikost predmetov, pojdite z matriko, in če niste prepričani o velikosti, pojdite z ArrayList.