Rozdiel medzi zoznamom polí a vektorom v jazyku Java
Obsah
ArrayList a Vector sú triedy v hierarchii kolekcií rámcov. ArrayList a Vector sa používajú na vytvorenie dynamického poľa objektov, kde sa môže pole podľa potreby zväčšovať. 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á kolekcia tried. Ďalším dôležitým rozdielom je, že ArrayList je na druhej strane nesynchronizovaný; Vektor je synchronizovaný.
Poďme študovať niektoré ďalšie rozdiely pomocou porovnávacieho grafu uvedeného nižšie.
- Porovnávacia tabuľka
- definícia
- Kľúčové rozdiely
- podobnosti
- záver
Porovnávacia tabuľka
Základ pre porovnanie | ArrayList | vektor |
---|---|---|
základné | Trieda ArrayList nie je synchronizovaná. | Trieda vektorov je synchronizovaná. |
Stará trieda | ArrayList je štandardná zbierka. | Vektor je staršia trieda, prepracovaná tak, aby podporovala triedu zbierky. |
Vyhlásenie o triede | trieda ArrayList | trieda Vector |
prerozdelenie | Ak nie je uvedené, ArrayList sa zvýši o polovicu svojej veľkosti. | Ak nie je uvedené, vektor sa zvýši na dvojnásobok jeho veľkosti. |
výkon | Pretože ArrayList je nesynchronizovaný, pracuje rýchlejšie ako Vector. | Keď je Vector synchronizovaný, pracuje pomalšie ako ArrayList. |
Výpočet / Iterator | ArrayList používa rozhranie Iterator na prechádzanie objektov uložených v ArrayList. | Vector používa Enumeráciu ako aj rozhranie Iterátora na prechádzanie predmetmi uloženými vo vektoroch. |
Definícia zoznamu polí
ArrayList patrí do zoznamu štandardných tried zbierok. Trieda ArrayList je definovaná vo vnútri java.util balenie, rozširuje AbstractList trieda, ktorá je tiež štandardnou triedou zbierky, a tiež implementuje zoznam, rozhranie definované v kolekčných rozhraniach. V Jave má štandardné pole vždy pevnú dĺžku. To znamená raz vytvorené; nedochádza k dynamickému rastu ani zmenšovaniu veľkosti. Mali by ste preto mať predchádzajúcu znalosť dĺžky poľa, ktoré používate. Niekedy sa však môže stať, že požadovaná dĺžka sa odhalí za behu programu, aby sa zvládla takáto situácia, java predstavil ArrayList.
ArrayList je trieda používaná na dynamické vytváranie poľa, ktoré uchováva odkazy na objekty. Veľkosť tohto poľa by sa mohla podľa potreby zväčšovať. Vyhlásenie triedy je nasledovné:
trieda ArrayList Tu E určuje typ objektov, ktoré bude mat 'pole držané. Vytvorené pole má premenlivú dĺžku a jeho veľkosť sa zväčšuje a zmenšuje, keď sú objekty pridané alebo odstránené zo zoznamu. ArrayList nie je synchronizovaný, čo znamená, že na poli môže súčasne pracovať viac ako jedno vlákno. Napríklad, ak jedno vlákno pridáva odkaz na objekt do poľa a ďalšie vlákno odstraňuje odkaz na objekt z toho istého poľa v rovnakom čase. Vytvorenie dynamického poľa pomocou triedy ArrayList: ArrayList Vo vyššie uvedenom kóde to vidíte; Vytvoril som rad objektov typu string. Niektoré objekty som pridal do poľa S1 pomocou metódy add () a neskôr som niektoré objekty odstránil pomocou metódy remove (). Môžete zistiť, či nezadáte počiatočnú veľkosť poľa, bude mať dĺžku „0“. Ako vidíte, pole sa pri pridávaní a odstraňovaní prvkov zmenšuje a zmenšuje. Vector je trieda Legacy, ktorá je navrhnutá tak, aby podporovala triedu kolekcie v hierarchii kolekcií Framework. Trieda vektora je tiež definovaná v java.util balík, rozšírený o AbstractList trieda a implementovaná zoznam rozhranie. Trieda Vector sa deklaruje takto: trieda Vector Tu E definuje typ objektu, ktorý bude uložený v poli. Pole vytvorené pomocou triedy Vector má premenlivú dĺžku. Ak nie je uvedený prírastok, zvyšuje sa dvojnásobne. Pochopme vytvorenie poľa pomocou vektora. vektor Vo vyššie uvedenom kóde vidíte, že som konkrétne spomínal veľkosť a prírastkovú hodnotu v konštruktore Vektora, zatiaľ čo deklarujem pole reťazcových objektov. Preto môžete pozorovať, že ako limit poľa končí, zvyšuje sa o hodnotu poskytnutú konštruktorovi pri deklarovaní. Na záver konštatujem, že použitie ArrayList je lepšie ako používanie Vector, pretože funguje rýchlejšie a lepšie.Definícia vektora
podobnosti:
záver: