Diferències entre ArrayList i Vector en Java

Autora: Laura McKinney
Data De La Creació: 1 Abril 2021
Data D’Actualització: 1 Ser Possible 2024
Anonim
Diferències entre ArrayList i Vector en Java - Tecnologia
Diferències entre ArrayList i Vector en Java - Tecnologia

Content


ArrayList i Vector són les classes sota jerarquia de Framework Framework. ArrayList i Vector, tots dos s’utilitzen per crear una matriu dinàmica d’objectes on la matriu pugui créixer de mida segons sigui necessari. Hi ha dues diferències bàsiques que distingeixen ArrayList i Vector és que Vector pertany a les classes Legacy que posteriorment es van reenginyar per donar suport a les classes de col·lecció, mentre que, ArrayList és una classe de col·lecció estàndard. Una altra diferència important és que ArrayList no està sincronitzat en canvi; El vector està sincronitzat.

Estudiem algunes altres diferències amb l'ajut del gràfic de comparació que es mostra a continuació.

  1. Gràfic de comparació
  2. Definició
  3. Diferències claus
  4. Semblances
  5. Conclusió

Gràfic de comparació

Bases per a la comparacióLlista ArrayLVector
BàsicLa classe ArrayList no està sincronitzada.La classe vectorial està sincronitzada.
Classe de llegatArrayList és una classe de col·lecció estàndard.Vector és una classe de llegat, re-dissenyada per donar suport a la classe de col·lecció.
Declaració de classeclasse ArrayListVector de classe
ReassignacióQuan no s'especifica, ArrayList s'incrementa a la meitat de la mida.Quan no s'especifica, un vector s'incrementa per duplicar la seva mida.
RendimentCom que ArrayList no està sincronitzat, funciona més ràpid que Vector.A mesura que Vector està sincronitzat, funciona més lent que ArrayList.
Enumeració / IteradorArrayList utilitza la interfície Iterator per recórrer els objectes emmagatzemats a ArrayList.Vector utilitza Enumeració i la interfície Iterator per recórrer els objectes emmagatzemats a Vectors.


Definició de ArrayList

ArrayList pertany a la llista de classes de recollida estàndard. La classe ArrayList es defineix dins de java.util el paquet, amplia el paquet Resum Llista classe que també és una classe de col·lecció estàndard, i també la implementa Llista, una interfície definida a Interfícies de col·lecció. A Java, una matriu estàndard sempre té una longitud fixa. Això vol dir que una vegada creat; no creix ni disminueix dinàmicament. Per tant, haureu de tenir coneixement previ de la longitud de la matriu que utilitzeu. Però, de vegades pot passar que es reveli la durada requerida en temps d'execució, per tal de gestionar aquest tipus de situacions ja va presentar ArrayList.

L’ArrayList és la classe usada per a la creació dinàmica d’una matriu que conté les referències als objectes. Aquesta matriu pot créixer de mida segons quan sigui necessari. La declaració de classe és la següent:


classe ArrayList

Aquí, E especifica el tipus d'objectes que mantindrà una matriu. La matriu creada és de longitud variable i augmenta i disminueix de mida quan s’afegeixen o es treuen objectes de la llista.

L'ArrayList no està sincronitzat, és a dir, més d'un fil pot funcionar alhora a la matriu. Per exemple, si un fil està afegint una referència d'objecte a la matriu i un altre fil elimina una referència d'objecte de la mateixa matriu alhora. La creació d'una matriu dinàmica mitjançant la classe ArrayList:

Llista ArrayL S1 = ArrayList nou(); System.out.ln ("Mida inicial de S1:" + S1.size ()); S1.add ("T"); S1.add ("C"); S1.add ("H"); S1.add (1, "E"); System.out.ln ("Després de l'addició S1 conté:" + S1); System.out.ln ("Mida de S1 després de l'addició:" + S1.size ()); S1.remove ("T"); S1.restreure (2); System.out.ln ("Després de la supressió S1 conté:" + S1); System.out.ln ("Mida de S1 després de la supressió:" + S1.size ()); // Mida inicial S1: 0 Després de l’addició S1 conté:; Mida de S1 després de l’afegit: 4 Després de la supressió S1 conté: Mida de S1 després de la supressió: 2

Al codi anterior, podeu veure-ho; He creat una matriu d'objectes de tipus de cadena. He afegit alguns objectes a la matriu S1 mitjançant el mètode add (), i més tard he suprimit alguns objectes mitjançant el mètode remove (). Podeu observar si no especifiqueu la mida inicial de la matriu que tindrà una longitud de "0". Com podeu veure, la matriu creix i redueix la mida a mesura que afegiu i elimineu els elements.

Definició de Vector

Vector és una classe Legat que es reenginyera per donar suport a la classe de col·lecció a la jerarquia de Framework Framework. La classe vectorial també es defineix en java.util paquet ampliat per Resum Llista classe i implementat per la Llista interfície. La classe de Vector es declara així:

Vector de classe

Aquí, E defineix el tipus d'objecte que es guardarà en una matriu. Una matriu creada mitjançant la classe Vector té una longitud variable. Si augmenta el doble, no augmenta el doble de mida. Entenem la creació d'una matriu mitjançant Vector.

Vector V = nou vector(1,1); V.addElement ("Tecnologia"); V.addElement ("Diferències"); System.out.ln ("Capacitat després de dos addicions:" + V.capacitat ()); V.addElement ("Entre"); V.addElement ("Vectors"); System.out.ln ("Capacitat actual:" + V.capacitat ()); // Capacitat de sortida després de 2 addicions: 2 Capacitat actual: 4

Al codi anterior podeu veure que, vaig mencionar particularment el valor de la mida i l’increment en el constructor de Vector respectivament, mentre declarava la matriu d’objectes de cadena. Per tant, podeu observar que a mesura que s'acaba el límit de la matriu, augmenta en funció del valor proporcionat al constructor durant la declaració.

  1. Diversos fils podrien operar a ArrayList al mateix temps, per tant, si es considera no sincronitzat. A diferència d'ArrayList, només un sol fil pot funcionar sobre un vector a la vegada; d’aquí s’anomena Sincronitzada.
  2. En una versió primerenca de Java, algunes classes i interfícies proporcionarien els mètodes per emmagatzemar objectes que es van anomenar Classes heretades, és una de les classes de Java heretades. Més tard, aquestes classes heretades es van reenginyar per donar suport a la classe Collection mentre que, la classe ArrayList és una classe de col·lecció estàndard.
  3. Quan s'utilitza totalment el límit d'una matriu i s'afegeix un objecte nou al costat de la matriu exhaurida, la seva mida creix tant en casos com en ArrayList com en Vector, però la diferència és que a ArrayList, si no s'especifica la mida. s'incrementa un 50% de la matriu actual mentre que, a la matriu vectorial es duplica la mida si no s'especifica el valor d'increment.
  4. Vector utilitza Enumeració i Iterator per travessar una matriu mentre que, ArrayList només utilitza un iterador per recórrer una matriu.
  5. Atès que ArrayList no està sincronitzat, hi ha molts fils que poden operar alhora, el seu rendiment és millor que el vector on només pot funcionar un fil alhora.

Similituds:

  1. ArrayList i Vector estan definits al paquet java.util.
  2. ArrayList i Vector tant estenen la classe AbsractList.
  3. ArrayList i Vector implementen la interfície de la llista.
  4. Tots dos s’utilitzen per ArrayList i Vectors per crear una matriu dinàmica que creix segons es requereixi.
  5. ArrayList i Vector mantenen referències d’objectes.

Conclusió:

Acabo dient que l'ús d'ArrayList és millor que l'ús de Vector ja que millora més ràpidament.