Preučimo nekatere druge razlike s pomočjo spodnje tabele za primerjavo.
Primerjalna tabela
Podlaga za primerjavo | ArrayList | Vektor |
---|---|---|
Osnovno | Razred ArrayList ni sinhroniziran. | Vector razred je sinhroniziran. |
Legacy razred | ArrayList je standardni razred zbirke. | Vector je podedovani razred, ki je prenovljen za podporo razredu zbiranja. |
Izjava razreda | razred ArrayList | razredu Vector |
Prerazporeditev | Če ni podana, se ArrayList poveča za polovico. | Če ni določen, se vektor poveča za podvojitev njegove velikosti. |
Izvedba | Ker je ArrayList nesinhroniziran, deluje hitreje kot Vector. | Ko je Vector sinhroniziran, deluje počasneje kot ArrayList. |
Štetje / Iterator | ArrayList uporablja vmesnik Iterator za prečkanje predmetov, shranjenih v ArrayList. | Vector uporablja enumeracijo in Iteratorjev vmesnik za prečkanje predmetov, shranjenih v vektorjih. |
Opredelitev ArrayList
ArrayList spada v seznam standardnih razredov zbiranja. Razred ArrayList je definiran znotraj paketa java.util, razširja razred AbstractList, ki je tudi standardni razred zbirke, in izvaja tudi List, vmesnik, definiran v Zbirnih vmesnikih. V Javi je standardni niz vedno fiksne dolžine. To pomeni, da je bil enkrat ustvarjen; ne raste dinamično ali se zmanjšuje po velikosti. Torej bi morali imeti predhodno znanje o dolžini polja, ki ga uporabljate. Včasih pa se lahko zgodi, da se zahtevana dolžina razkrije v času izvajanja, tako da je za obvladovanje te vrste situacije Java predstavila ArrayList.
ArrayList je razred, ki se uporablja za dinamično ustvarjanje matrike, ki vsebuje sklice na objekte. Ta matrika bi lahko rasla po velikosti in po potrebi. Izjava razreda je naslednja:
razred ArrayList
Tu E podaja tip objektov, ki jih bo matrika imela. Ustvarjena matrika je spremenljive dolžine in se poveča in zmanjša, ko se predmeti dodajo ali odstranijo s seznama.
ArrayList ni sinhroniziran, kar pomeni, da lahko na matriki istočasno deluje več kot ena nit. Na primer, če ena nit doda sklic objekta na matriko, druga nit pa istočasno odstrani referenco objekta iz istega niza. Ustvarjanje dinamičnega polja z uporabo razreda ArrayList:
ArrayList S1 = novo ArrayList (); System.out.println ("začetna velikost S1:" + S1.size ()); S1.add ("T"); S1.dod. ("C"); S1.dod ("H"); S1.dod (1, "E"); System.out.println ("Po dodatku S1 vsebuje:" + S1); System.out.println ("Velikost S1 po dodatku:" + S1.size ()); S1.odstranite ("T"); S1. Odstranite (2); System.out.println ("Po izbrisu S1 vsebuje:" + S1); System.out.println ("Velikost S1 po brisanju:" + S1.size ()); // Izhodna začetna velikost S1: 0 Po dodatku S1 vsebuje: [T, E, C, H]; Velikost S1 po dodatku: 4 Po izbrisu S1 vsebuje: [E, H] Velikost S1 po brisanju: 2
V zgornji kodi lahko to vidite; Ustvaril sem niz predmetov vrste niza. Dodal sem nekaj objektov v polje S1 z uporabo add () metode in kasneje izbrisal nekaj objektov z metodo remove (). Opazite lahko, če ne določite začetne velikosti matrike, ki bo trajala 0. Kot lahko vidite, se polje poveča in zmanjša, ko dodajate in brišete elemente.
Definicija vektorja
Vector je podedovani razred, ki se preoblikuje za podporo razredu zbiranja v hierarhiji okvirja zbirke. Razredni vektor je definiran tudi v paketu java.util, razširjen z razredom AbstractList in implementiran v vmesniku List . Razred Vector je deklariran kot sledi:
razredu Vector
Tu E opredeljuje tip objekta, ki bo shranjen v matriki. Matrika, ustvarjena z uporabo razreda Vector, je spremenljive dolžine. Če povečanje ni določeno, se njegova velikost podvoji. Spoznajmo ustvarjanje matrike z uporabo Vektorja.
Vektor V = novi vektor (1, 1); V.oddelment ("Tech"); V.addElement ("razlike"); System.out.println ("Kapaciteta po 2 dodatku:" + V.Kapaciteta ()); V.addElement ("Med"); V.addElement ("Vektorji"); System.out.println ("Trenutna zmogljivost:" + V.Kapaciteta ()); // Izhodna kapaciteta po 2 dodatku: 2 Trenutna zmogljivost: 4
V zgornji kodi lahko vidite, da sem posebej omenil velikost in vrednost prirastka v konstruktorju oz. Tako lahko opazite, da se meja matrike konča z vrednostjo, podano konstruktorju med deklaracijo.
Ključne razlike med ArrayList in Vektorji
- Na ArrayList lahko istočasno deluje več niti, kar pomeni, da je nesinhronizirano . Za razliko od ArrayList lahko na vektorju deluje samo ena nit; zato se imenuje Sinhronizirana .
- V zgodnji različici Jave, bi nekateri razredi in vmesniki zagotovili metode za shranjevanje predmetov, ki so jih imenovali Legacy classes Vector, je eden izmed razredov Legacy Java. Kasneje so bili ti zapuščeni razredi prenovljeni v podporo razredu zbirke, medtem ko je razred ArrayList standardni razred zbiranja.
- Ko je omejitev matrike v celoti izkoriščena in je dodan nov objekt poleg izčrpanega niza, njegova velikost raste v obeh primerih, npr. V ArrayListu kot tudi v vektorju, vendar je razlika v ArrayListu, če ni določena velikost se poveča za 50% trenutnega niza, medtem ko se v vektorskem nizu podvoji, če vrednost inkrementa ni določena.
- Vector uporablja enumeracijo in Iterator za prečkanje niza, medtem ko ArrayList uporablja samo iterator za prečkanje matrike.
- Ker je ArrayList Unsynchronized in številne niti lahko delujejo na njem hkrati, je njegova zmogljivost boljša od Vektorja, na katerem lahko deluje samo ena nit.
Podobnosti:
- ArrayList in Vector sta definirana v paketu java.util.
- ArrayList in Vector podaljšujeta razred AbsractList.
- ArrayList in Vector oba izvajata vmesnik s seznamom.
- ArrayList in Vectors se uporabljata za ustvarjanje dinamičnega niza, ki raste po potrebi.
- ArrayList in Vector držita reference objekta.
Sklep:
Zaključim z besedami, da je uporaba ArrayLista boljša kot uporaba Vektorja, saj deluje hitreje in bolje.