Arraylist vs Vector
Masyvų sąrašą galima laikyti dinamine masyve, kurios dydis gali augti. Dėl šios priežasties programuotojui nereikia žinoti masyvo sąrašo dydžio jį apibrėžiant. Vektorius taip pat galima laikyti masyvu, kurio dydis gali išaugti. Vektorius galima lengvai paskirstyti ir prie jų galima priprasti, kai reikiamas saugyklos dydis nežinomas iki veikimo laiko.
Kas yra arraylistas?
Masyvų sąrašą galima laikyti dinamine masyve, kurios dydis gali augti. Todėl masyvo sąrašai yra ideali vieta, kai jūs nežinote deklaravimo metu reikalaujamų elementų dydžio. „Java“ programoje masyvių sąrašai gali laikyti tik objektus, jie negali tiesiogiai laikyti primityvių tipų (galite įdėti primityvius tipus objekto viduje arba naudoti primityvių tipų įvyniojimo klases). Paprastai masyvų sąrašuose pateikiami įterpimo, ištrynimo ir paieškos metodai. Laiko sudėtingumas norint pasiekti elementą yra o (1), o įterpimo ir ištrynimo laiko sudėtingumas yra o (n). „Java“ programoje masyvių sąrašus galima apeiti naudojant įžvalgos kilpas, iteratorius arba tiesiog naudojant rodykles. „Java“ programoje masyvių sąrašai buvo pristatyti nuo 1.2 versijos ir yra „Java“ rinkinių sistemos dalis.
Kas yra vektorius?
Vektorius taip pat yra masyvas, kurio dydis gali išaugti. Vektoriai gali būti lengvai paskirstomi ir gali būti naudojami, kai reikiamas saugyklos dydis nežinomas iki veikimo laiko. Vektoriai taip pat gali laikyti tik objektus ir negali išlaikyti primityvių tipų. Vektoriai yra sinchronizuoti, todėl juos galima saugiai naudoti daugybėje sriegių. Vektoriams pateikiami būdai, kaip pridėti objektus, ištrinti objektus ir ieškoti objektų. Panašiai kaip javalailų sąraše, vektorius galima apvažiuoti naudojant priekinės linijos kilpas, iteratorius arba tiesiog naudojant rodykles. Kalbant apie „Java“, vektoriai buvo įtraukti nuo pirmosios „Java“ versijos.
Kuo skiriasi „Arraylist“ ir „Vector“?
Nors tiek masyvai, tiek vektoriai yra labai panašūs į dinaminius masyvus, kurių dydis gali augti, jie turi keletą svarbių skirtumų. Pagrindinis skirtumas tarp masyvo sąrašų ir vektorių yra tas, kad vektoriai yra sinchronizuojami, tuo tarpu masyvo sąrašai nėra sinchronizuojami. Todėl masyvių sąrašų naudojimas daugiasluoksnėje aplinkoje nebus tinkamas, tuo tarpu vektoriai gali būti saugiai naudojami daugiasluoksnėje aplinkoje (nes jie saugūs sriegiams). Bet sinchronizavimas vektoriuose sumažintų našumą. Todėl būtų netinkama naudoti vektorius vienoje sriegių aplinkoje. Viduje tiek masyrai, tiek vektoriai naudoja masyvus objektams laikyti. Kai dabartinės erdvės nepakanka, vektoriai padidins jo vidinio masyvo dydį dvigubai, o masyvų sąrašai padidins jo vidinio masyvo dydį 50%. Bet naudojant tiek masyvus, tiek vektorius, suteikiant tinkamą pradinę talpą, galima išvengti nereikalingo vidinio masyvo dydžio keitimo. Esant tokiai situacijai, kai duomenų augimo greitis žinomas, tikslingiau būtų naudoti vektorius, nes galima apibrėžti padidėjusią vektorių vertę.