Rozdiel medzi zoznamom polí a vektorom v jazyku Java

Autor: Laura McKinney
Dátum Stvorenia: 1 Apríl 2021
Dátum Aktualizácie: 1 Smieť 2024
Anonim
Rozdiel medzi zoznamom polí a vektorom v jazyku Java - Technológie
Rozdiel medzi zoznamom polí a vektorom v jazyku Java - Technológie

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.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. podobnosti
  5. záver

Porovnávacia tabuľka

Základ pre porovnanieArrayListvektor
základnéTrieda ArrayList nie je synchronizovaná.Trieda vektorov je synchronizovaná.
Stará triedaArrayList je štandardná zbierka.Vektor je staršia trieda, prepracovaná tak, aby podporovala triedu zbierky.
Vyhlásenie o triedetrieda ArrayListtrieda Vector
prerozdelenieAk 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ýkonPretože ArrayList je nesynchronizovaný, pracuje rýchlejšie ako Vector.Keď je Vector synchronizovaný, pracuje pomalšie ako ArrayList.
Výpočet / IteratorArrayList 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 S1 = nový zoznam polí(); System.out.ln ("Počiatočná veľkosť S1:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.ln ("Po pridaní S1 obsahuje:" + S1); System.out.ln ("Veľkosť S1 po pridaní:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.ln ("Po odstránení S1 obsahuje:" + S1); System.out.ln ("Veľkosť S1 po vymazaní:" + S1.size ()); // OutputInitial size S1: 0 Po pridaní S1 obsahuje:; Veľkosť S1 po pridaní: 4 Po vymazaní S1 obsahuje: Veľkosť S1 po vymazaní: 2

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.

Definícia vektora

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 V = nový vektor(1,1); V.addElement ( "Tech"); V.addElement ( "rozdiely"); System.out.ln ("Kapacita po 2 pridaní:" + V.capacity ()); V.addElement ( "Medzi"); V.addElement ( "vektory"); System.out.ln ("Aktuálna kapacita:" + V.capacity ()); // Výstupná kapacita po 2 sčítaní: 2 Aktuálna kapacita: 4

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í.

  1. Na ArrayList by mohlo fungovať viacero vlákien súčasne, a preto sa uvažuje unsynchronized, Na rozdiel od ArrayListu môže na jednom vektore fungovať súčasne iba jedno vlákno; preto sa volá synchronizované.
  2. V skorej verzii jazyka Java by niektoré triedy a rozhrania poskytovali metódy na ukladanie objektov, ktoré sa nazývali Legacy triedy Vector, patrí medzi starú triedu Java. Neskôr boli tieto staršie triedy opätovne vyvinuté, aby podporovali triedu Collection, zatiaľ čo trieda ArrayList je štandardná kolekcia Collection.
  3. Ak 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 aj Vector, ale rozdiel je v ArrayList, ak nie je uvedená veľkosť sa zvyšuje o 50% aktuálneho poľa, zatiaľ čo vo vektorovom poli sa veľkosť zdvojnásobí, ak nie je špecifikovaná hodnota prírastku.
  4. Vector používa Enumeráciu ako aj Iterátor na prechádzanie maticou, zatiaľ čo ArrayList používa iterátor iba na prechádzanie maticou.
  5. Pretože ArrayList je nesynchronizovaný a mnoho vlákien na ňom môže pracovať súčasne, jeho výkon je lepší ako vektor, na ktorom môže naraz fungovať iba jedno vlákno.

podobnosti:

  1. ArrayList a Vector sú definované v balíku java.util.
  2. ArrayList aj Vector rozširujú triedu AbsractList.
  3. ArrayList a Vector implementujú rozhranie zoznamu.
  4. ArrayList aj vektory sa používajú na vytvorenie dynamického poľa, ktoré rastie podľa potreby.
  5. ArrayList a Vector obsahujú odkazy na objekty.

záver:

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.