Rozdiel medzi zoznamom polí a vektorom

ArrayList vs Vector

Vektor implementuje polia, ktoré môžu rásť / zmenšovať sa za behu, keď sú z neho pridané alebo odstránené niektoré prvky. K jej prvkom sa pristupuje pomocou celočíselného indexu. Spravovanie vektorového úložného priestoru charakterizujú dve polia - zvýšenie kapacity a kapacity. Implementuje štyri rozhrania:
* Zoznam
* Náhodný prístup
* Klonovateľné
* Serializovateľné rozhrania

ArrayList rovnako ako vektory implementuje aj štyri rozhrania. Podobne ako vektory sa jej veľkosť môže počas behu meniť. Tiež má pole nazvané kapacita, ktorého veľkosť je rovnako veľká ako veľkosť zoznamu polí.

Vektor aj ArrayList sú vhodné na načítanie prvkov z ľubovoľnej polohy a tiež na vkladanie alebo vymazávanie prvkov z konca triedy kontajnera..
Z hľadiska API sú oba vektory aj ArrayList veľmi podobné. Takže kde presne leží rozdiel medzi nimi? Nasledujúce body objasnia túto otázku:

1. Synchronizácia: Vektory sú synchronizované, ale ArrayList nie. Ak pridáte alebo odstránite prvky z ArrayListu, bude to označované ako štrukturálna modifikácia. Ak k ArrayListu pristupuje súčasne viacero vlákien s blokom kódu modifikujúcim zoznam, potom je potrebné zoznam externe synchronizovať. Stručne povedané, obsah vektorov je bezpečný z hľadiska vlákien, zatiaľ čo zoznam ArrayList nie. Ak sa požiadavka nezmieňuje o zbere zabezpečenom vláknami, mali by sme zvoliť ArrayList ako výkon synchronizačných zásahov. Nesynchronizované ArrayLists sú rýchle.

2. Rast údajov: ArrayList aj vektorové prvky sa ukladajú ako polia, ale vektory majú predvolenú veľkosť 10 a ArrayList nemá predvolenú veľkosť. Keď niekto pridá prvok do poľa ArrayList alebo do vektora, existuje šanca, že ktorejkoľvek triede môže dôjsť priestor. V takom prípade štandardne Vector zdvojnásobí svoju veľkosť, zatiaľ čo veľkosť ArrayList sa zvýši o 50%. Hodnotu prírastku môžete nastaviť v prípade vektorov, ktoré nie sú možné pre zoznam polí.

3. Prechádzanie prvkami: ArrayList má tu výhodu, pretože k svojim prvkom môžete pristupovať jednoduchým použitím indexu. V prípade vektorov musíte vytvoriť iterátor, aby ste prešli jeho prvky.

Zhrnutie:

1.Ak má byť trieda kontajnera modifikovaná jedným vláknom alebo nejakou lokálnou premennou, mali by ste použiť ArrayList.
2.Ak je trieda kontajnerov prístupná z viacerých vlákien, potom použite vektory, inak budete musieť vykonať manuálnu synchronizáciu.
3.Môžeme určiť veľkosť prírastku pomocou vektora a so zoznamom polí, ktoré nemôžeme.
4. Vektor je synchronizovaný a ArrayList nie.
5. Vektor môže zväčšiť veľkosť dvojnásobne; ArrayList ho môže zvýšiť o 50%.