Odporúčaná, 2024

Redakcia Choice

Rozdiel medzi ArrayList a vektorom v jazyku Java

ArrayList a Vector sú triedy v hierarchii Collection Framework. ArrayList a Vector, obidva sa používajú na vytvorenie dynamického poľa objektov, kde pole môže rásť podľa veľkosti podľa potreby. Existujú dva základné rozdiely, ktoré rozlišujú ArrayList a Vector je, že Vector patrí do tried Legacy, ktoré boli neskôr reengineered na podporu tried kolekcie, zatiaľ čo ArrayList je štandardná trieda zbierok. Ďalším dôležitým rozdielom je, že ArrayList nie je synchronizovaný na druhej strane; Vektor je synchronizovaný.

Pozrite sa na ďalšie rozdiely pomocou porovnávacieho grafu zobrazeného nižšie.

Porovnávacia tabuľka

Základ pre porovnanieArrayListvektor
základnéTrieda ArrayList nie je synchronizovaná.Vektorová trieda je synchronizovaná.
Staršia triedaArrayList je štandardná trieda Collection.Vektor je staršia trieda, ktorá bola prepracovaná na podporu kolekcie.
Vyhlásenie triedyclass ArrayListtriedy Vector
prerozdelenieAk nie je špecifikovaný, ArrayList sa zvýši o polovicu svojej veľkosti.Ak nie je zadaný, vektor sa zvýši na dvojnásobok jeho veľkosti.
výkonKeďže ArrayList je nesynchronizovaný, pracuje rýchlejšie ako Vector.Keďže vektor je synchronizovaný, pracuje pomalšie ako ArrayList.
Výpočet / IteratorArrayList používa rozhranie Iterator na prechádzanie objektov uložených v ArrayList.Vektor používa rozhranie Vyčíslenie ako aj rozhranie Iterator na prechádzanie objektov uložených vo Vektoroch.

Definícia zoznamu ArrayList

ArrayList patrí do zoznamu štandardných kolekcií. Trieda ArrayList je definovaná vo vnútri balíka java.util, rozširuje triedu AbstractList, ktorá je tiež štandardnou triedou kolekcií, a tiež implementuje List, rozhranie definované v kolekčných rozhraniach. V jazyku Java štandardné pole má vždy pevnú dĺžku. To znamená, že raz vytvorené; nemá dynamický rast alebo zmenšenie veľkosti. Takže by ste mali mať predošlé znalosti o dĺžke poľa, ktoré používate. Ale niekedy sa môže stať, že požadovaná dĺžka je odhalená pri behu, takže aby ste zvládli tento druh situácie, java zaviedla ArrayList.

ArrayList je trieda používaná na dynamickú tvorbu poľa, ktorá obsahuje odkazy na objekty. Toto pole môže rásť podľa veľkosti podľa potreby. Deklarácia triedy je nasledovná:

 class ArrayList 

Tu E špecifikuje typ objektov, ktoré pole uchová. Vytvorené pole je premenlivej dĺžky a zvyšuje a znižuje veľkosť pri pridávaní alebo odstraňovaní objektov zo zoznamu.

ArrayList nie je synchronizovaný, čo znamená, že viac ako jeden závit môže pracovať na matici súčasne. Napríklad, ak jeden závit pridáva odkaz na objekt do poľa a iný vlákno súčasne odstraňuje referenciu objektu z rovnakého poľa. Vytvorenie dynamického poľa pomocou triedy ArrayList:

 ArrayList S1 = nový ArrayList (); System.out.println ("Počiatočná veľkosť S1:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.println ("Po pridaní S1 obsahuje:" + S1); System.out.println ("Veľkosť S1 po pridaní:" + S1.size ()); S1.remove ("T"); S1.vymazanie (2); System.out.println ("Po odstránení S1 obsahuje:" + S1); System.out.println ("Veľkosť S1 po odstránení:" + S1.size ()); // Výstup Počiatočná veľkosť S1: 0 Po pridaní S1 obsahuje: [T, E, C, H]; Veľkosť S1 po pridaní: 4 Po odstránení S1 obsahuje: [E, H] Veľkosť S1 po odstránení: 2 

Vo vyššie uvedenom kóde môžete vidieť to; Vytvoril som pole objektov typu reťazca. Pridal som niekoľko objektov do poľa S1 pomocou metódy add () a neskôr som odstránil niektoré objekty pomocou metódy remove (). Môžete si všimnúť, že ak neurčíte počiatočnú veľkosť poľa, bude to dĺžka '0'. Ako môžete vidieť pole rastie a zmenšuje veľkosť pri pridávaní a odstraňovaní prvkov.

Definícia vektora

Vektor je trieda Legacy, ktorá je reengineered na podporu kolekcie v hierarchii Collection Framework. Vektorová trieda je tiež definovaná v balíku java.util, rozšírená o triedu AbstractList a implementovaná rozhraním List . Trieda Vector je deklarovaná nasledovne:

 triedy Vector 

Tu E definuje typ objektu, ktorý bude uložený v mape. Pole vytvorené pomocou triedy Vector má premenlivú dĺžku. Zvýši sa dvojnásobok jeho veľkosti, ak nie je zadaný prírastok. Chápeme vytvorenie poľa pomocou vektora.

 Vektor V = nový vektor (1, 1); V.addElement ( "Tech"); V.addElement ( "rozdiely"); System.out.println ("Kapacita po 2 pridanie:" + V. kapacita ()); V.addElement ( "Medzi"); V.addElement ( "vektory"); System.out.println ("Aktuálna kapacita:" + V.kapacita ()); Výstupná kapacita po 2 prírastkoch: 2 Aktuálna kapacita: 4 

Vo vyššie uvedenom kóde môžete vidieť, že som sa obzvlášť zmienil o veľkosti a prírastkovej hodnote v konštruktore Vectora, zatiaľ čo deklaroval pole reťazec objektov. Z tohto dôvodu môžete pozorovať, že ako limit poľa skončí, zvyšuje sa o hodnotu poskytnutú konštruktérovi pri deklarovaní.

Kľúčové rozdiely medzi ArrayList a vektory

  1. Viaceré vlákna by mohli pracovať v systéme ArrayList súčasne, preto sa považujú za nesynchronizované . Na rozdiel od ArrayList, iba jeden závit môže pracovať s vektorom naraz; preto sa nazýva Synchronizované .
  2. V ranej verzii Java, niektoré triedy a rozhrania by poskytovali metódy ukladania objektov, ktoré boli nazývané Legacy classes Vektor je jedným z tried Java Legacy. Neskôr boli tieto staršie triedy reengineered na podporu triedy Collection, zatiaľ čo trieda ArrayList je štandardná trieda Collection.
  3. Keď je limit poľa plne využitý a nový objekt je pridaný vedľa vyčerpaného poľa, jeho veľkosť rastie v oboch prípadoch, tj v ArrayList, rovnako ako v Vector, ale rozdiel je, že v ArrayList, ak nie je zadaná veľkosť sa zvyšuje o 50% aktuálneho poľa, zatiaľ čo v poli Vektor sa zdvojnásobuje veľkosť, ak nie je zadaná prírastková hodnota.
  4. Vektor používa vyčíslenie ako aj Iterator na prechádzanie poľa, zatiaľ čo ArrayList používa iba iterátor na prechádzanie poľa.
  5. Vzhľadom k tomu, že ArrayList je nesynchronizovaný a na ktorom môže pracovať mnoho vlákien, jeho výkon je lepší ako vektor, na ktorom môže naraz fungovať iba jeden závit.

podobnosti:

  1. ArrayList a Vector sú definované v balíku java.util.
  2. ArrayList a Vector rozširujú triedu AbsractList.
  3. ArrayList a Vector implementujú rozhranie List.
  4. ArrayList a Vektory sa používajú na vytvorenie dynamického poľa, ktoré sa podľa potreby vyvíja.
  5. ArrayList a Vector obsahujú referencie objektov.

záver:

Na záver som povedal, že použitie ArrayList je lepšie ako používanie vektora, pretože sa vykonáva rýchlejšie a lepšie.

Top