ArrayList vs Vector
Vektor izvaja matrike, ki lahko med izvajanjem rastejo / se krčijo, ko nekatere elemente dodamo ali odstranimo iz njega. Do njegovih elementov je mogoče dostopati s celotnim indeksom. Dve polji - povečanje zmogljivosti in zmogljivosti, označujeta upravljanje vektorskega shranjevanja. Izvaja štiri vmesnike:
* Seznam
* Naključni dostop
* Cloneable
* Naložljivi vmesniki
ArrayList, tako kot vektorji, izvaja tudi štiri vmesnike. Tako kot vektorji se lahko tudi njegova velikost med izvajanjem spreminja. Prav tako ima polje, imenovano zmogljivost, katerega velikost je tako velika kot velikost ArrayList.
Tako vektorji kot ArrayList so dobri za pridobivanje elementov iz katerega koli položaja in tudi za vstavljanje ali brisanje elementov s konca kontejnerskega razreda.
Z vidika API sta si tako vektorja kot ArrayList zelo podobna. Kje torej leži razlika med obema? Naslednje točke bodo osvetlile to zadevo:
1. Sinhronizacija: Vektorji so sinhronizirani, vendar ArrayList ni. Če dodate ali izbrišete elemente iz ArrayList, se imenuje strukturna sprememba. Kadar več niti dostopa do ArrayList hkrati z blokom kode, ki spreminja seznam, potem je treba zunanje sinhronizirati seznam. Skratka, vektorska vsebina ni varna z nitmi, medtem ko ArrayList ne. Če zahteva ne omenja zbirke, varne z nitmi, se morate odločiti za ArrayList, ko sinhronizacija dosega uspešnost. Ninhronizirani seznami Array so hitri.
2. Rast podatkov: ArrayList in vektorski elementi so shranjeni kot matriki, vektorji pa imajo privzeto velikost 10, ArrayList pa nima privzete velikosti. Ko dodate element v ArrayList ali vektor, obstaja možnost, da kateri koli razred lahko zmanjka prostora. V takem primeru Vector privzeto podvoji svojo velikost, medtem ko se velikost ArrayList poveča za 50%. V primeru vektorjev, ki za ArrayList ni mogoče, lahko nastavite vrednost prirastka.
3. Potovanje po elementih: ArrayList ima tu prednost, saj do njegovih elementov dostopate tako, da preprosto uporabite indeks. V primeru vektorjev morate ustvariti iterator za prečkanje njegovih elementov.
Povzetek:
1.Če želite razred zabojnika spremeniti z eno nitjo ali neko lokalno spremenljivko, potem uporabite ArrayList.
2. Ko do razreda vsebnikov dostopate z več niti, potem uporabite vektorje, sicer boste morali narediti ročno sinhronizacijo.
3.Za vektor lahko določimo prirast velikosti in z ArrayListom ne moremo.
4.Vektor se sinhronizira in ArrayList ni.
5. vektor lahko poveča velikost za dvakrat; ArrayList ga lahko poveča za 50%.