ArrayList vs Vector
A vektor olyan tömböket valósít meg, amelyek futás közben növekedhetnek / zsugorodnak, amikor egyes elemeket hozzáadnak vagy eltávolítanak. Az elemeket egész szám index segítségével lehet elérni. Két mező - a kapacitás és a kapacitásnövekedés - jellemzi a vektortároló menedzsmentet. Négy interfészt valósít meg:
* Lista
* Véletlen hozzáférés
* Klónozható
* Szerializálható interfészek
Az ArrayList, a vektorokhoz hasonlóan, négy interfészt is megvalósít. Ugyanúgy, mint a vektorok, annak mérete is megváltozhat a futási idő alatt. Ezenkívül van egy kapacitásnak nevezett mező, amelynek mérete olyan nagy, mint az ArrayList mérete.
Mind a vektorok, mind az ArrayList kiválóan alkalmasak az elemek bármilyen helyzetből való visszahívására, valamint az elemek beszúrására vagy törlésére a tároló osztály végéből.
Az API szempontjából mindkét vektor, mind az ArrayList nagyon hasonlóak. Tehát hol van a különbség a kettő között? A következő pontok rávilágítanak erre a kérdésre:
1. Szinkronizálás: A vektorok szinkronizálva vannak, de az ArrayList nem. Ha elemeket ad hozzá vagy töröl ArrayListből, akkor szerkezeti módosításnak nevezik. Ha több szál egyidejűleg egy ArrayList-hez fér hozzá a listát módosító kódblokkhoz, akkor ki kell szinkronizálnia a listát. Röviden: a vektor tartalma nem biztonságos szál, míg az ArrayList nem. Ha a követelmény nem említi a szálbiztos gyűjtést, akkor választania kell az ArrayList alkalmazást, mivel a szinkronizálás eléri a teljesítményt. A nem szinkronizált ArrayLists gyors.
2. Adatnövekedés: Az ArrayList és a vektor elemek tömbként is tárolódnak, de a vektorok alapértelmezett mérete 10, és az ArrayList alapértelmezett mérete nincs. Ha valamelyik elemet hozzáad egy ArrayListhez vagy a vektorhoz, akkor fennáll annak esélye, hogy bármelyik osztály elfogy a helyiségből. Ebben az esetben alapértelmezés szerint a vektor megduplázza méretét, míg az ArrayList mérete 50% -kal növekszik. Beállíthat egy növekményes értéket vektorok esetén, amely az ArrayList számára nem lehetséges.
3. Az elemek áthaladása: Az ArrayList itt rendelkezik azzal az előnnyel, hogy egyszerűen index használatával érheti el az elemeket. Vektorok esetén létre kell hozni egy iterátort az elemek áthaladásához.
Összefoglaló:
1.Ha a tárolóosztályt egyetlen szállal vagy valamilyen helyi változóval kell módosítani, akkor ArrayList-et kell használnia.
2.Ha a tárolóosztályhoz több szál érhető el, akkor vektort használjon, különben kézi szinkronizálást kell végeznie.
3. Megadhatjuk a növekmény méretét a vektorral és az ArrayList-rel, amit nem tudunk.
4.A vektor szinkronizálva van, és az ArrayList nem.
5.A vektor megnövelheti a méretet kétszer; Az ArrayList 50% -kal növelheti.