Arraylist vs Vector
Arraylist lahko vidimo kot dinamičen niz, ki lahko narašča v velikosti. Zaradi tega razloga programerju ni treba vedeti velikosti arraylista, ko ga definira. Vektorja lahko vidimo tudi kot niz, ki lahko narašča v velikosti. Vektorje je mogoče enostavno dodeliti in jih je mogoče uporabiti, ko zahtevana velikost pomnilnika ni znana do izvajanja.
Kaj je Arraylist?
Arraylist lahko vidimo kot dinamičen niz, ki lahko narašča v velikosti. Zato so arrayisti idealni za uporabo v razmerah, ko ob deklaraciji ne veste velikosti elementov. Na Javi lahko arraylisti hranijo samo predmete, ne smejo imeti neposredno primitivnih vrst (primitivne vrste lahko postavite znotraj predmeta ali uporabite razrede ovojev primitivnih vrst). Na splošno so arraylists na voljo z načini za izvajanje vstavljanja, brisanja in iskanja. Časovna zapletenost dostopa do elementa je o (1), medtem ko ima vstavljanje in brisanje časovno kompleksnost o (n). Na Javi je mogoče, da se arilisti premikajo z uporabo zank predvajanja, iteratorjev ali preprosto z uporabo indeksov. V Javi so bili arraylists predstavljeni iz različice 1.2 in je del Java Collections Framework.
Kaj je vektor?
Vector je tudi niz, ki lahko narašča v velikosti. Vektorje je mogoče enostavno dodeliti in jih je mogoče uporabiti, kadar zahtevana velikost pomnilnika ni znana do izvajanja. Vektorji lahko držijo le predmete in ne morejo imeti primitivnih vrst. Vektorji so sinhronizirani, zato jih je mogoče varno uporabljati v večtirnih okoljih. Vektorjem so na voljo metode za dodajanje predmetov, brisanje predmetov in iskanje predmetov. Podobno kot arraylist v javi je tudi vektorje mogoče premikati s pomočjo foreach zank, iteratorjev ali preprosto z uporabo indeksov. Kar se tiče Jave, so že od prve različice Jave vključeni vektorji.
Kakšna je razlika med Arraylist in Vector?
Čeprav sta tako matrika kot vektorji zelo podobna dinamičnim nizom, ki lahko naraščajo v velikosti, imajo nekaj pomembnih razlik. Glavna razlika med arraylisti in vektorji je, da so vektorji sinhronizirani, medtem ko so arraylists nesinhronizirani. Zato uporaba arraylistov v večrendnih okoljih ne bo primerna, medtem ko je vektorje mogoče varno uporabljati v več zaporednih okoljih (saj so navojni). Toda sinhronizacija v vektorjih bi povzročila zmanjšanje zmogljivosti. Zato ne bi bilo dobro uporabljati vektorjev v enem samem navoju. V notranjosti tako arrayisti kot vektorji uporabljajo matrike za zadrževanje predmetov. Ko trenutnega prostora ne bo dovolj, bodo vektorji podvojili velikost svojega notranjega niza, medtem ko arrayisti povečajo velikost notranjega niza za 50%. Toda če uporabljate tako arrayliste kot tudi vektorje, s primerno začetno zmogljivostjo je mogoče preprečiti nepotrebno spreminjanje velikosti notranjega niza. V primeru, da je stopnja rasti podatkov znana, bi bila uporaba vektorjev bolj primerna, saj bi lahko določili prirastno vrednost vektorjev.