Arraylist vs Vector
Arraylist lahko vidimo kot dinamično matriko, ki se lahko poveča. Iz tega razloga programerju ni treba vedeti velikosti arraylista, ko ga definira. Vektor lahko vidimo tudi kot matriko, ki se lahko poveča. Vektorje je mogoče enostavno dodeliti in uporabiti, kadar zahtevana velikost pomnilnika ni znana do časa izvajanja.
Kaj je Arraylist?
Arraylist lahko vidimo kot dinamično matriko, ki se lahko poveča. Zato so arraylists idealni za uporabo v primerih, ko ne veste velikosti elementov, ki so potrebni v času deklaracije. V Javi lahko arraylists vsebujejo samo predmete, primitivnih tipov ne morejo imeti neposredno (primitivne tipe lahko vstavite znotraj predmeta ali uporabite razrede ovojnic primitivnih tipov). Na splošno so arraylists opremljeni z metodami za vstavljanje, brisanje in iskanje. Časovna zapletenost dostopa do elementa je o (1), medtem ko ima vstavljanje in brisanje časovno zapletenost o (n). V Javi lahko arrayliste pregledujete z zankami foreach, iteratorji ali preprosto s pomočjo indeksov. V Javi so bili seznami seznamov predstavljeni od različice 1.2 in je del okvira Java Collections Framework.
Kaj je vektor?
Vektor je tudi matrika, ki se lahko poveča. Vektorje je mogoče enostavno dodeliti in uporabiti, kadar zahtevana velikost pomnilnika ni znana do časa izvajanja. Vektorji lahko imajo tudi samo predmete in ne morejo imeti primitivnih vrst. Vektorji so sinhronizirani, zato jih lahko varno uporabljamo v večnitnih okoljih. Vektorjem so na voljo metode za dodajanje predmetov, brisanje predmetov in iskanje predmetov. Podobno kot arraylist v javi je tudi po vektorjih mogoče prečkati z zankami foreach, iteratorji ali preprosto s pomočjo indeksov. Ko gre za Javo, so vektorji vključeni že od prve različice Jave.
Kakšna je razlika med Arraylist in Vector?
Čeprav so tako seznami kot vektorji zelo podobni dinamičnim nizom, ki se lahko povečajo, imajo nekaj pomembnih razlik. Glavna razlika med arraylists in vectors je, da so vektorji sinhronizirani, medtem ko arraylists niso sinhronizirani. Zato uporaba arraylists v večnitnih okoljih ne bo primerna, vektorje pa je mogoče varno uporabljati v večnitnih okoljih (ker so varni z nitmi). Toda sinhronizacija v vektorjih bi povzročila zmanjšanje zmogljivosti. Zato ne bi bilo dobro uporabljati vektorjev v enem navojnem okolju. Notranjost tako arraylists kot vektorji uporabljajo matrike za zadrževanje predmetov. Ko trenutnega prostora ni dovolj, bodo vektorji podvojili velikost njegove notranje matrike, medtem ko arraylisti povečajo velikost njene notranje matrike za 50%. Toda pri uporabi tako seznamov kot vektorjev se lahko s primerno začetno zmogljivostjo izognemo nepotrebnemu spreminjanju velikosti notranjega polja. V primeru, da je stopnja rasti podatkov znana, bi bila uporaba vektorjev primernejša, saj bi lahko določili inkrementalno vrednost vektorjev.