Recomendado, 2024

La Elección Del Editor

Diferencia entre ArrayList y Vector en Java

ArrayList y Vector son las clases en la jerarquía del Marco de recopilación. ArrayList y Vector, ambos se utilizan para crear una matriz dinámica de objetos donde la matriz puede crecer en tamaño cuando sea necesario. Hay dos diferencias básicas que distinguen a ArrayList y Vector es que Vector pertenece a las clases Legacy que luego fueron rediseñadas para admitir las clases de colección, mientras que una ArrayList es una clase de colección estándar. Otra diferencia importante es que ArrayList no está sincronizado por otro lado; El vector está sincronizado.

Estudiemos algunas otras diferencias con la ayuda del Cuadro de comparación que se muestra a continuación.

Gráfica comparativa

Bases para la comparaciónLista de arregloVector
BASICLa clase ArrayList no está sincronizada.La clase de vectores está sincronizada.
Clase de legadoArrayList es una clase de colección estándar.Vector es una clase heredada, rediseñada para admitir la clase de colección.
Declaración de Claseclase ArrayListvector de clase
ReasignaciónCuando no se especifica, un ArrayList se incrementa en la mitad de su tamaño.Cuando no se especifica, un vector se incrementa para duplicar su tamaño.
ActuaciónComo ArrayList no está sincronizado, funciona más rápido que Vector.Como el Vector está sincronizado, funciona más lento que ArrayList.
Enumeración / IteradorArrayList usa la interfaz Iterator para atravesar los objetos almacenados en ArrayList.Vector utiliza la enumeración y la interfaz del iterador para recorrer los objetos almacenados en Vectores.

Definición de ArrayList

ArrayList pertenece a la lista de clases de colección estándar. La clase ArrayList se define dentro del paquete java.util, extiende la clase AbstractList que también es una clase de colección estándar y también implementa List, una interfaz definida en las interfaces de colección. En Java, una matriz estándar siempre es de longitud fija. Eso significa una vez creado; no crece ni disminuye dinámicamente en tamaño. Por lo tanto, debe tener el conocimiento previo de la longitud de la matriz que está utilizando. Pero, a veces puede suceder que la longitud requerida se revele en el tiempo de ejecución, por lo que, para manejar este tipo de situación, Java introdujo ArrayList.

ArrayList es una clase utilizada para la creación dinámica de una matriz que contiene las referencias a los objetos. Esta matriz podría crecer en tamaño cuando sea necesario. La declaración de clase es la siguiente:

 clase ArrayList 

Aquí, E especifica el tipo de objetos que contendrá una matriz. La matriz creada es de longitud variable y aumenta y disminuye de tamaño cuando se agregan o eliminan objetos de la lista.

El ArrayList no está sincronizado, lo que significa que más de un subproceso puede operar en la matriz al mismo tiempo. Por ejemplo, si un hilo está agregando una referencia de objeto a la matriz y otro está eliminando una referencia de objeto de la misma matriz al mismo tiempo. La creación de una matriz dinámica utilizando la clase ArrayList:

 ArrayList S1 = nueva ArrayList (); System.out.println ("Tamaño inicial de S1:" + S1.size ()); S1.add ("T"); S1.add ("C"); S1.add ("H"); S1.add (1, "E"); System.out.println ("Después de la adición S1 contiene:" + S1); System.out.println ("Tamaño de S1 después de la adición:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.println ("Después de la eliminación S1 contiene:" + S1); System.out.println ("Tamaño de S1 después de la eliminación:" + S1.size ()); // Tamaño inicial de salida de S1: 0 Después de la adición, S1 contiene: [T, E, C, H]; Tamaño de S1 después de la adición: 4 Después de la eliminación, S1 contiene: [E, H] Tamaño de S1 después de la eliminación: 2 

En el código anterior, puedes ver eso; He creado una matriz de objetos de tipo cadena. Agregué algunos objetos a la matriz S1 usando el método add (), y luego borré algunos objetos usando el método remove (). Puede observar que si no especifica el tamaño inicial de la matriz, tendrá una longitud de '0'. Como puede ver, la matriz crece y se reduce de tamaño a medida que agrega y elimina los elementos.

Definición de vector

Vector es una clase heredada que se rediseñó para admitir la clase de recopilación en la jerarquía del marco de recopilación. La clase vectorial también se define en el paquete java.util, extendido por la clase AbstractList e implementado por la interfaz List . La clase Vector se declara de la siguiente manera:

 vector de clase 

Aquí, la E define el tipo de objeto que se almacenará en una matriz. Una matriz creada usando la clase Vector es de longitud variable. Aumenta el doble de su tamaño si no se especifica el incremento. Vamos a entender la creación de matriz utilizando Vector.

 Vector V = nuevo Vector (1, 1); V.addElement ("Tech"); V.addElement ("Diferencias"); System.out.println ("Capacidad después de 2 adiciones:" + V.capacity ()); V.addElement ("Entre"); V.addElement ("Vectores"); System.out.println ("Capacidad actual:" + V.capacity ()); // Capacidad de salida después de 2 sumas: 2 Capacidad actual: 4 

En el código anterior se puede ver que, en particular, mencioné el tamaño y el valor de incremento en el constructor de Vector respectivamente, mientras declaraba la matriz de objetos de cadena. Por lo tanto, puede observar que a medida que el límite de la matriz finaliza, se incrementa según el valor proporcionado al constructor mientras se declara.

Diferencias clave entre ArrayList y vectores

  1. Varios subprocesos podrían operar en ArrayList al mismo tiempo, por lo que se considera no sincronizado . A diferencia de ArrayList, solo un solo hilo puede operar en un vector a la vez; Por eso se llama Synchronized .
  2. En una versión anterior de Java, algunas clases e interfaces proporcionarían los métodos para almacenar objetos que se denominaban clases heredadas. Vector es una de las clases heredadas de Java. Más tarde, estas clases heredadas se rediseñaron para admitir la clase de colección, mientras que la clase ArrayList es una clase de colección estándar.
  3. Cuando el límite de una matriz se utiliza por completo y se agrega un nuevo objeto junto a la matriz agotada, su tamaño aumenta tanto en los casos, es decir, en ArrayList como en Vector, pero la diferencia es que en ArrayList, si no se especifica el tamaño se incrementa en un 50% de la matriz actual mientras que, en Vector array, se duplica el tamaño si no se especifica el valor de incremento.
  4. Vector usa la enumeración y el iterador para atravesar una matriz, mientras que una ArrayList solo usa iterador para atravesar una matriz.
  5. Dado que ArrayList no está sincronizado y muchos subprocesos pueden operar en él al mismo tiempo, su rendimiento es mejor que Vector en el que solo un subproceso puede operar a la vez.

Similitudes:

  1. ArrayList y Vector están definidos en el paquete java.util.
  2. ArrayList y Vector extienden la clase AbsractList.
  3. ArrayList y Vector implementan la interfaz de lista.
  4. ArrayList y Vectores se utilizan para crear una matriz dinámica que crece según se requiera.
  5. ArrayList y Vector contienen referencias de objetos.

Conclusión:

Concluyo diciendo que el uso de ArrayList es mejor que usar Vector, ya que se realiza más rápido y mejor.

Top