Masyvų sąrašas prieš vektorių
Masyvų sąrašas gali būti vertinamas kaip dinaminis masyvas, kurio dydis gali išaugti. Dėl šios priežasties programuotojui nereikia žinoti masyvo sąrašo dydžio, kai jis / ji jį apibrėžia. Vektorius taip pat gali būti vertinamas kaip masyvas, kurio dydis gali išaugti. Vektoriai gali būti lengvai paskirstomi ir gali būti naudojami, kai reikalingas saugyklos dydis nėra žinomas iki vykdymo laiko.
Kas yra masyvų sąrašas?
Masyvų sąrašas gali būti vertinamas kaip dinaminis masyvas, kurio dydis gali išaugti. Todėl masyvų sąrašai idealiai tinka naudoti tais atvejais, kai nežinote deklaravimo metu reikalingų elementų dydžio. „Java“masyvų sąrašai gali laikyti tik objektus, jie negali tiesiogiai laikyti primityvių tipų (galite primityvius tipus įdėti į objekto vidų arba naudoti pirmykščių tipų pakavimo klases). Paprastai masyvų sąrašuose pateikiami metodai, kaip atlikti įterpimą, ištrynimą ir paiešką. Laiko sudėtingumas norint pasiekti elementą yra o (1), o įterpiant ir ištrinant - o (n). „Java“sistemoje masyvų sąrašus galima pereiti naudojant foreach kilpas, iteratorius arba tiesiog naudojant indeksus. „Java“masyvų sąrašai buvo pristatyti iš 1.2 versijos ir tai yra „Java Collections Framework“dalis.
Kas yra vektorius?
Vektorius taip pat yra masyvas, kuris gali išaugti. Vektorius galima lengvai paskirstyti ir naudoti tada, kai reikalingas saugyklos dydis nėra žinomas iki vykdymo laiko. Vektoriai taip pat gali laikyti tik daiktus ir negali laikyti primityvių tipų. Vektoriai yra sinchronizuoti, todėl juos galima saugiai naudoti daugiasriegėse aplinkose. Vektoriams pateikiami metodai, kaip pridėti objektus, ištrinti objektus ir ieškoti objektų. Panašiai kaip „Java“masyvų sąraše, vektorius galima pereiti naudojant „foreach“kilpas, iteratorius arba tiesiog naudojant indeksus. Kalbant apie „Java“, vektoriai buvo įtraukti nuo pirmosios „Java“versijos.
Kuo skiriasi masyvų sąrašas ir „Vector“?
Nors tiek masyvų sąrašai, tiek vektoriai yra labai panašūs į dinaminius masyvus, kurių dydis gali išaugti, jie turi keletą svarbių skirtumų. Pagrindinis skirtumas tarp masyvų sąrašų ir vektorių yra tas, kad vektoriai yra sinchronizuoti, o masyvų sąrašai nesinchronizuoti. Todėl masyvo sąrašų naudojimas daugialypėje aplinkoje nebus tinkamas, o vektorius galima saugiai naudoti daugiasriegėse aplinkose (nes jie yra saugūs siūlams). Tačiau sinchronizavimas vektoriuose sumažintų našumą. Todėl nebūtų gera mintis naudoti vektorius vienoje srieginėje aplinkoje. Viduje tiek masyvų sąrašai, tiek vektoriai naudoja masyvus objektams laikyti. Kai dabartinės vietos nepakanka, vektoriai padvigubins vidinio masyvo dydį, o masyvų sąrašai padidins vidinio masyvo dydį 50%. Tačiau naudojant tiek masyvų sąrašus, tiek vektorius, suteikiant tinkamą pradinį pajėgumą, galima išvengti nereikalingo vidinio masyvo dydžio keitimo. Esant situacijai, kai duomenų augimo greitis yra žinomas, labiau tiktų naudoti vektorius, nes galima apibrėžti vektorių prieauginę vertę.