Diferencia entre ArrayList y Vector en Java

Autor: Laura McKinney
Fecha De Creación: 1 Abril 2021
Fecha De Actualización: 1 Mayo 2024
Anonim
14.4 Vector vs ArrayList in Java
Video: 14.4 Vector vs ArrayList in Java

Contenido


ArrayList y Vector son las clases bajo la jerarquía de Framework de colección. ArrayList y Vector, ambos se usan 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 se rediseñaron para admitir las clases de colección, mientras que 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 comparativo que se muestra a continuación.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Similitudes
  5. Conclusión

Cuadro comparativo

Bases para la comparaciónLista de arregloVector
BASICLa clase ArrayList no está sincronizada.La clase de vector está sincronizada.
Clase heredadaArrayList 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, ArrayList se incrementa a 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 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 Enumeration así como la interfaz Iterator para atravesar 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 java.util paquete, se extiende el AbstractList clase, que también es una clase de colección estándar, y también implementa Lista, una interfaz definida en las interfaces de colección. En Java, una matriz estándar siempre tiene una longitud fija. Eso significa una vez creado; no crece ni se reduce 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 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.

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

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

En el código anterior, puedes ver eso; Creé una matriz de objetos de tipo cadena. Agregué algunos objetos a la matriz S1 usando el método add (), y luego eliminé 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 disminuye de tamaño a medida que agrega y elimina los elementos.

Definición de vector

Vector es una clase Legacy que se ha rediseñado para admitir la clase de colección en la jerarquía de Framework de colección. La clase vectorial también se define en java.util paquete, extendido por AbstractList clase e implementado por el Lista interfaz. 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 con la clase Vector es de longitud variable. Aumenta el doble de su tamaño si no se especifica el incremento. Comprendamos la creación de una matriz usando Vector.

Vector V = nuevo vector(1,1); V.addElement ("Tecnología"); V.addElement ("Diferencias"); System.out.ln ("Capacidad después de 2 adiciones:" + V.capacity ()); V.addElement ("Entre"); V.addElement ("Vectores"); System.out.ln ("Capacidad actual:" + V.capacity ()); // Capacidad de salida después de 2 adiciones: 2 Capacidad actual: 4

En el código anterior puede ver eso, mencioné particularmente el tamaño y el valor de incremento en el constructor de Vector, respectivamente, al declarar la matriz de objetos de cadena. Por lo tanto, puede observar que a medida que finaliza el límite de la matriz, se incrementa en el valor proporcionado al constructor durante la declaración.

  1. Varios subprocesos podrían operar en ArrayList al mismo tiempo, por lo tanto, se considera no sincronizado. A diferencia de ArrayList, solo un subproceso puede operar en un vector a la vez; por eso se llama Sincronizado.
  2. En una versión inicial de Java, algunas clases e interfaces proporcionarían los métodos para almacenar objetos que se llamaron clases Legacy. Vector es uno de los de la clase Legacy de Java. Más tarde, estas clases heredadas se rediseñaron para admitir la clase Collection, mientras que la clase ArrayList es una clase Collection estándar.
  3. Cuando el límite de una matriz se utiliza por completo y se agrega un nuevo objeto al lado de 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 la matriz se duplica en tamaño si no se especifica el valor de incremento.
  4. Vector usa Enumeration así como Iterator para atravesar una matriz, mientras que ArrayList solo usa iterador para atravesar una matriz.
  5. Como ArrayList no está sincronizado y muchos subprocesos pueden operar en él al mismo tiempo, su rendimiento es mejor que Vector en el que solo puede operar un subproceso 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 List.
  4. ArrayList y Vectors se usan para crear una matriz dinámica que crece según sea necesario.
  5. ArrayList y Vector contienen referencias a objetos.

Conclusión:

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