Diferencia entre ArrayList y Vector

Diferencia entre ArrayList y Vector

ArrayList vs Vector

Un vector implementa matrices que pueden crecer/encogerse en tiempo de ejecución cuando se agregan o eliminan algunos elementos. Se accede a sus elementos utilizando un índice entero. Dos campos: incremento de capacidad y capacidad, caracterizan la gestión de almacenamiento de vectores. Implementa cuatro interfaces:
* Lista
* Acceso aleatorio
* Clonable
* Interfaces serializables

ArrayList, al igual que los vectores, también implementa cuatro interfaces. Nuevamente, como los vectores, su tamaño puede cambiar durante el tiempo de ejecución. Además, tiene un campo llamado capacidad cuyo tamaño es tan grande como el tamaño de ArrayList.

Tanto los vectores como la ArrayList son buenos para recuperar elementos de cualquier posición y también para insertar o eliminar elementos desde el final de la clase de contenedor.
Desde la perspectiva de la API, tanto los vectores como la matriz son muy similares. Entonces, ¿dónde se encuentra exactamente la diferencia entre los dos?? Los siguientes puntos arrojarán algo de luz sobre este asunto:

1. Sincronización: los vectores están sincronizados pero ArrayList no está. Si agrega o elimina elementos de una lista de matrices, se conoce como modificación estructural. Cuando múltiples hilos acceden a una lista de matrices simultáneamente con un bloque de código que modifica la lista, entonces uno necesita sincronizar externamente la lista. En resumen, el contenido vectorial es seguro de hilos, mientras que los ArrayList no son. Si el requisito no menciona la colección a prueba de hilos, entonces uno debe optar por ArrayList como sincronización llega al rendimiento. Las listas de matrices no sincronizadas son rápidas.

2. Crecimiento de datos: los elementos de ArrayList y Vector se almacenan como matrices, pero los vectores tienen un tamaño predeterminado de 10, y ArrayList no tiene un tamaño predeterminado. Cuando uno agrega un elemento a una lista de matrices o un vector, existe la posibilidad de que cualquiera de las clases pueda quedarse sin espacio. En tal caso, por defecto, un vector duplica su tamaño, mientras que el tamaño de ArrayList aumenta en un 50%. Puede establecer un valor de incremento en el caso de vectores que no es posible para ArrayList.

3. Atravesando los elementos: ArrayList tiene una ventaja aquí, ya que puede acceder a sus elementos simplemente usando un índice. En el caso de los vectores, debe crear un iterador para atravesar sus elementos.

Resumen:

1.Si la clase de contenedor debe ser modificada por un solo hilo o alguna variable local, entonces debe usar una lista de matrices.
2.Cuando se accede a la clase de contenedor mediante múltiples hilos, use vectores, de lo contrario tendrá que hacer sincronización manual.
3.Podemos especificar el tamaño de incremento con el vector y con ArrayList no podemos.
4.Un vector está sincronizado y una lista de matrices no está.
5.Un vector puede incrementar el tamaño por doble; ArrayList puede incrementarlo en un 50%.