Skirtumas tarp masyvo ir ArrayList

Kas yra „Array“ ir „ArrayList“?

Tiek „Array“, tiek „ArrayList“ yra rodyklės duomenų struktūros, kurios dažnai naudojamos „Java“ programose. Konceptualiai kalbant, „ArrayList“ iš vidaus remia masyvai, tačiau norint tapti puikiu „Java“ kūrėju, svarbiausia suprasti skirtumą tarp šių dviejų. Tai gana paprastas žingsnis pradedant, ypač pradedantiesiems, kurie ką tik pradėjo kodavimą. Nors abu elementai yra naudojami „Java“ elementams laikyti, kurie gali būti tiek primityvai, tiek objektai, jie turi nemažą skirtumą pagal funkcionalumą ir našumą. Pagrindinis skirtumas tarp šių dviejų yra tas, kad „Array“ yra statiškas, o „ArrayList“ yra dinamiško pobūdžio. Šiame straipsnyje lyginami abu aspektai, kad galėtumėte pasirinkti vieną kitą.

Skirtumas tarp masyvo ir arraylist

  1. Galima pakeisti

Vienas pagrindinių ir pastebimų skirtumų tarp dviejų duomenų struktūrų yra tas, kad „Masyvas“ yra statinio pobūdžio, tai reiškia, kad jis yra fiksuoto ilgio duomenų tipas, o „ArrayList“ yra dinamiško pobūdžio, tai reiškia, kad tai kintamo ilgio duomenų struktūra. Techniniu požiūriu masyvo ilgis negali būti keičiamas ar modifikuojamas sukūrus masyvo objektą. Jame yra nuoseklus to paties duomenų tipo elementų rinkimas. „Java“ masyvai veikia kitaip, nei jie veikia C / C ++. Kita vertus, „ArrayList“ gali pakeisti savo dydį, o masyvai gali augti taip, kaip jiems reikėjo. Kadangi tai yra dinamiška duomenų struktūra, elementus galima pridėti ir pašalinti iš sąrašo.

  1. Generikai

Negalite kurti „Java“ bendrųjų klasių sąsajų masyvų, todėl masyvai ir generiniai vaistai neeina kartu, todėl neįmanoma sukurti bendrojo masyvo dėl vienos pagrindinės priežasties, kad masyvai yra kovariantiniai, o generiniai - nekintami. Nors masyvas yra fiksuoto ilgio duomenų struktūra, jame yra tos pačios klasės objektai arba konkretaus duomenų tipo primityvai. Taigi jei kurdami „Array“ objektą bandysite išsaugoti kitokį nei nurodytas duomenų tipą, jis tiesiog išmeta „ArrayStoreException“. „ArrayList“, kita vertus, palaiko „Generics“, kad užtikrintų tipo saugumą.

  1. Primityvai

„ArrayList“ neleidžiami tokie pirminiai duomenų tipai kaip int, dviguba, ilga ir char. Tai greičiau sulaiko objektus, o primityvai „Java“ objektais nelaikomi. Kita vertus, masyvai gali laikyti ir „Java“ pradmenis, ir objektus, nes tai yra viena efektyviausių „Java“ duomenų struktūrų objektams saugoti. Tai yra suvestinių duomenų tipas, skirtas laikyti objektus, kurie gali būti to paties arba skirtingo tipo.

  1. Ilgis

Norint gauti masyvo ilgį, kodas turi pasiekti ilgio atributą, nes reikia žinoti ilgį, norint atlikti operacijas masyve. „ArrayList“ naudoja „size ()“ metodą „ArrayList“ dydžiui nustatyti, tačiau jis skiriasi nuo masyvo ilgio nustatymo. Dydis () metodo atributas nustato elementų skaičių „ArrayList“, o tai savo ruožtu yra „ArrayList“ talpa..

Pavyzdžiui:

viešosios klasės „ArrayLengthTest“

public static void main (stygos [] args)

ArrayList arrList = naujas ArrayList ();

Styginių [] elementai = „Vienas“, „Du“, „Trys“;

skirtas (styginiams: elementai)

arrList.add (str);

int dydis = items.size ();

System.out.println (dydis);

  1. Įgyvendinimas

„Masyvas“ yra natūralus „Java“ programavimo komponentas, kuris sukuriamas dinamiškai ir elementams laikyti naudoja priskyrimo operatorių, o „ArrayList“ elementams įterpti naudoja atributą „add ()“. „ArrayList“ yra klasė iš „Java“ kolekcijos sistemos, kuri naudoja nustatytų metodų rinkinį, kad galėtų pasiekti ir modifikuoti elementus. „ArrayList“ dydį galima dinamiškai padidinti arba sumažinti. Masyvo elementai saugomi gretimoje atminties vietoje, o jo dydis išlieka statinis.

  1. Spektaklis

Nors abi duomenų struktūros suteikia panašaus našumo, nes „ArrayList“ palaiko „Arrays“, viena jų turi šiek tiek pranašumo prieš kitą, daugiausia kalbant apie procesoriaus laiką ir atminties naudojimą. Tarkime, jei žinote masyvo dydį, greičiausiai eisite su „ArrayList“. Tačiau iteravimas per masyvą yra šiek tiek greitesnis nei iteravimas per ArrayList. Jei programoje yra daug primityvų, masyvas tiek laiko, tiek atminties atžvilgiu bus žymiai geresnis nei ArrayList. Masyvai yra žemo lygio programavimo kalba, kurią galima naudoti įgyvendinant kolekciją. Tačiau našumas gali skirtis priklausomai nuo atliekamos operacijos.

Masyvas vs. Arrailistas

Masyvas „ArrayList“
Masyvas yra fiksuoto ilgio duomenų struktūra, kurios ilgio negalima modifikuoti sukūrus masyvo objektą. „ArrayList“ yra dinamiško pobūdžio, tai reiškia, kad prireikus jis gali pakeisti savo dydį.
Masyvo dydis programoje išlieka nepakitęs. „ArrayList“ dydis gali dinamiškai augti, priklausomai nuo apkrovos ir talpos.
Elementams laikyti naudojamas priskyrimo operatorius. Elementams įterpti jis naudoja atributą add ().
Jame gali būti primityvų, taip pat to paties ar skirtingo tipo duomenų objektų. Primityvai „ArrayList“ neleidžiami. Jame gali būti tik objektų tipai.
Masyvai ir generikai nėra koja kojon. „ArrayList“ leidžiama naudoti generinius preparatus.
Masyvai gali būti daugialypiai. „ArrayList“ yra vienos dimensijos.
Tai natūralus programavimo komponentas, kuriame elementai saugomi gretimose atminties vietose. Tai klasė iš „Java“ kolekcijų sistemos, kurioje objektai niekada nelaikomi gretimose vietose.
Ilgio kintamasis naudojamas masyvo ilgiui nustatyti. Dydžio () metodas naudojamas ArrayList dydžiui nustatyti.
Nurodytiems elementams ar objektams saugoti reikia mažiau atminties nei „ArrayList“. Objektams laikyti reikia daugiau atminties nei masyvui.
Iteracija per masyvą yra greitesnė nei iteracija per ArrayList. „ArrayList“ kartojimas yra žymiai lėtesnis.

Santrauka

Nors kai kurie gali manyti, kad įgyvendindami masyvus programoje galite gauti rezultatų greičiau, nei darydami tą patį su ArrayLists dėl paprastos priežasties, kad masyvai yra žemo lygio duomenų struktūra, našumas gali skirtis atsižvelgiant į tai, kokią operaciją vykdote. Na, masyvo ilgis yra fiksuotas, o „ArrayList“ dydį galima dinamiškai padidinti arba sumažinti, taigi „ArrayList“ turi šiek tiek pranašumų prieš masyvą funkcionalumo atžvilgiu. Tačiau nepaisant skirtumų, jie taip pat turi tam tikrų panašumų. Abi yra „Java“ indeksų pagrindu sukurtos duomenų struktūros, leidžiančios saugoti objektus. Abi jos leidžia naudoti ir nulines reikšmes, ir kopijas. Na, jei jūs iš anksto žinote objektų dydį, turėtumėte eiti su masyvu, o jei nesate tikri dėl dydžio, eikite su ArrayList.