Arraylist vs Vector
Masyvo sąrašas gali būti vertinamas kaip dinaminis masyvas, kurio dydis gali padidėti. Dėl šios priežasties programuotojui nereikia žinoti masyvo sąrašo dydžio, kai jį apibrėžia. Vektorius taip pat gali būti vertinamas kaip masyvas, kurio dydis gali augti. Vektorius galima lengvai paskirstyti ir naudoti, kai reikiamas saugyklos dydis nežinomas iki vykdymo laiko.
Kas yra masyvo sąrašas?
Masyvo sąrašas gali būti vertinamas kaip dinaminis masyvas, kurio dydis gali padidėti. Todėl masyvo sąrašai idealiai tinka naudoti tais atvejais, kai deklaravimo metu nežinote reikalingų elementų dydžio. Java programoje masyvo sąrašai gali turėti tik objektus, jie negali turėti primityvių tipų tiesiogiai (primityvius tipus galite įdėti į objektą arba naudoti primityvių tipų įvyniojimo klases). Paprastai masyvo sąrašams pateikiami įterpimo, ištrynimo ir paieškos metodai. Prieigos prie elemento laiko sudėtingumas yra o (1), o įterpimo ir ištrynimo laiko sudėtingumas yra o (n). Java programoje masyvo sąrašus galima naršyti naudojant foreach kilpas, iteratorius arba tiesiog naudojant indeksus. „Java“masyvo sąrašai buvo pristatyti iš 1.2 versijos ir yra „Java Collections Framework“dalis.
Kas yra vektorius?
Vektorius taip pat yra masyvas, kurio dydis gali padidėti. Vektorius galima lengvai paskirstyti ir naudoti, kai reikiamas saugyklos dydis nėra žinomas iki vykdymo laiko. Vektoriai taip pat gali turėti tik objektus ir negali turėti primityvių tipų. Vektoriai yra sinchronizuojami, todėl gali būti saugiai naudojami kelių gijų aplinkoje. Vektoriuose pateikiami metodai, kaip pridėti objektus, ištrinti objektus ir ieškoti objektų. Panašiai kaip ir java masyvo sąrašas, vektorius galima pereiti naudojant foreach kilpas, iteratorius arba tiesiog naudojant indeksus. Kalbant apie Java, vektoriai buvo įtraukti nuo pirmosios Java versijos.
Kuo skiriasi Arraylist ir Vector?
Nors tiek masyvų sąrašai, tiek vektoriai yra labai panašūs į dinaminius masyvus, kurių dydis gali padidėti, jie turi keletą svarbių skirtumų. Pagrindinis skirtumas tarp masyvo sąrašų ir vektorių yra tas, kad vektoriai yra sinchronizuojami, o masyvo sąrašai yra nesinchronizuoti. Todėl masyvo sąrašų naudojimas kelių gijų aplinkoje nebus tinkamas, o vektorius galima saugiai naudoti kelių gijų aplinkoje (nes jie yra saugūs gijai). Tačiau sinchronizavimas vektoriuose sumažintų našumą. Todėl nebūtų gera idėja naudoti vektorius vienoje srieginėje aplinkoje. Viduje tiek masyvo sąrašai, tiek vektoriai naudoja masyvus objektams laikyti. Kai dabartinės erdvės nepakanka, vektoriai padvigubina vidinio masyvo dydį, o masyvo sąrašai padidina vidinį masyvo dydį 50%. Tačiau naudojant ir masyvo sąrašus, ir vektorius, suteikiant tinkamą pradinį pajėgumą, galima išvengti nereikalingo vidinio masyvo dydžio keitimo. Esant tokiai situacijai, kai žinomas duomenų augimo greitis, labiau tiktų naudoti vektorius, nes būtų galima apibrėžti vektorių prieauginę reikšmę.