Arraylist vs Vector
Maralistu var uzskatīt par dinamisku masīvu, kura lielums var pieaugt. Šī iemesla dēļ programmētājam, nosakot to, nav jāzina masilista lielums. Vektoru var uzskatīt arī par masīvu, kura lielums var pieaugt. Vektorus var viegli iedalīt, un tos var izmantot, ja līdz izpildes laikam nav zināms vajadzīgais krātuves lielums.
Kas ir arrailists?
Maralistu var uzskatīt par dinamisku masīvu, kura lielums var pieaugt. Tāpēc masīvu saraksti ir ideāli izmantojami situācijās, kad jūs nezināt deklarēšanas laikā nepieciešamo elementu lielumu. Java valodā masīvu saraksti var turēt tikai objektus, tie nevar tieši turēt primitīvos tipus (varat ievietot primitīvos tipus objekta iekšpusē vai izmantot primitīvo tipu iesaiņojuma klases). Parasti masīvu saraksti tiek nodrošināti ar metodēm ievietošanas, dzēšanas un meklēšanas veikšanai. Laika sarežģītība piekļuvei elementam ir o (1), savukārt ievietošanai un izdzēšanai laika sarežģītība ir o (n). Java programmā masīvu sarakstus var apbraukt, izmantojot foreach cilpas, iteratorus vai vienkārši izmantojot indeksus. Java programmā masīvu saraksti tika ieviesti no versijas 1.2, un tā ir Java kolekciju ietvara daļa.
Kas ir vektors?
Vektors ir arī masīvs, kura lielums var pieaugt. Vektorus var viegli iedalīt, un tos var izmantot, ja nepieciešamais krātuves lielums nav zināms līdz izpildes laikam. Vektors arī var turēt tikai objektus un nevar turēt primitīvus tipus. Vektori ir sinhronizēti, tāpēc tos var droši izmantot vidē ar vītnēm. Vektoriem tiek nodrošinātas metodes objektu pievienošanai, objektu dzēšanai un objektu meklēšanai. Līdzīgi kā javalaru sarakstos, vektorus var šķērsot, izmantojot foreach cilpas, iteratorus vai vienkārši, izmantojot indeksus. Runājot par Java, vektori ir iekļauti kopš pirmās Java versijas.
Kāda ir atšķirība starp Arraylist un Vector?
Pat ja masīvu saraksti un vektori ir ļoti līdzīgi dinamiskajiem masīviem, kuru lielums var pieaugt, tiem ir dažas būtiskas atšķirības. Galvenā atšķirība starp masīvu sarakstiem un vektoriem ir tā, ka vektori tiek sinhronizēti, turpretim masīvu saraksti nav sinhronizēti. Tāpēc masīvu sarakstu izmantošana vairāku pavedienu vidē nebūs piemērota, savukārt vektorus var droši izmantot daudzpavedienu vidē (jo tie ir droši diegi). Bet sinhronizācija vektoros samazinātu veiktspēju. Tāpēc nebūtu laba ideja izmantot vektorus vienā vītņotā vidē. Iekšēji gan masīvi, gan vektori izmanto masīvus objektu turēšanai. Kad pašreizējā atstarpe nav pietiekama, vektori dubultosies tā iekšējā masīva lielumā, bet masīvu saraksti palielina tā iekšējā masīva lielumu par 50%. Bet, izmantojot gan masīvu sarakstus, gan vektorus, piešķirot piemērotu sākotnējo ietilpību, var izvairīties no nevajadzīgas iekšējā masīva lieluma maiņas. Situācijā, kad ir zināms datu pieauguma ātrums, vektoru izmantošana būtu piemērotāka, jo vektoru pieauguma vērtību varētu noteikt.