Kas yra ArrayList?

Kompiuterių programavimo „ArrayList“ yra duomenų struktūra, kuri veikia kaip kompiuterio masyvas, bet taip pat įgyvendina galimybę dinamiškai padidinti masyvo dydį pagal poreikį. Skirtingai nuo vidinio masyvo duomenų tipo, kurio dydis negali būti pakeistas vykdant programą, ArrayList struktūra gali augti ir mažinti masyvo dydį, reaguodama į elementų pridėjimą arba ištrynimą. Jis turi labai palankų veikimo profilį, leidžiantį greitai atsitiktinai pasiekti duomenų rinkinį. Tačiau yra du atvejai, kai tai vyksta lėčiau nei kai kurios kitos duomenų struktūros, ty elementų pridėjimas ir pašalinimas iš masyvo vidurio. Dauguma objektinio programavimo kalbų turi tam tikrą tokio sąrašo įgyvendinimą, nors kartais jos vadinamos dinaminiais masyvais.

Naudojant ArrayList programa suteikia galimybę akimirksniu pasiekti duomenų objektus su indekso numeriu, o ne pereiti per visą duomenų seką, kad surastų adresą, kuris reikalingas susietiems sąrašams. Galimybė pagal poreikį padidinti masyvo dydį yra labai subalansuotas požiūris, kuriame atsižvelgiama ir į lankstumą, ir į greitį. Be to, pašalinus elementus iš tokio sąrašo, masyvo dydis sumažinamas, atlaisvinant vietos atmintyje.

Vienas iš ArrayList naudojimo pranašumų, palyginti su kai kuriomis kitomis duomenų struktūromis, yra tas, kad įpakavimo objektas nebūtinai turi turėti saugomus duomenis. Susieto sąrašo arba maišos lentelės atveju paprastai reikia atskiro objekto, kad būtų išlaikyta kolekcija, naudojama saugoti ir manipuliuoti. Naudojant ArrayList, vienintelė informacija, reikalinga apie duomenų objektus, yra objekto adresas atmintyje. Tai reiškia, kad dirbant su tokio tipo sąrašu bus sunaudota mažiau papildomos atminties.

Galima problema naudojant ArrayList gali kilti dėl diegimo ir atminties valdymo sistemos. Dauguma masyvų yra paskirstomi kaip nuoseklios atminties vietos. Taigi, norint naudoti tam tikro dydžio ArrayList, nepertraukiama blokų seka turi turėti bent tiek atminties. Dinaminis masyvas gali kelis kartus pakeisti savo dydį, todėl gali atsirasti atminties suskaidymas ir dėl to gali sutrikti atminties paskirstymas, sustabdant programos vykdymą.

„ArrayList“ našumas yra panašus į standartinio masyvo naudojimą, nors prieigos laikas yra šiek tiek lėtesnis, nes masyvas yra įdėtas į objektą. Vienas atvejis, kai dinaminis masyvas gali smarkiai sulėtėti, priklausomai nuo įgyvendinimo, yra tada, kai reikia pakeisti masyvo dydį. Tai gali apimti esamo masyvo nukopijavimą į naują masyvą, kuris buvo priskirtas naujam norimam dydžiui, todėl laikinai pablogėja našumas. Ta pati problema gali kilti pridedant arba pašalinant elementą iš sąrašo vidurio, todėl visi šie elementai turi būti perkelti į naują vietą.