Para los que no saben la seccion o tag Java Player van a ser tips puntuales que nos pueden llegar ayudar mucho en las entrevistas laborales.
Bueno comenzando un poco hoy vamos a ver las diferencias entre ArrayList vs Vector.
Algunas veces el Vector es mejor, otras veces el ArrayList es mejor, algunas veces uno
no sabe cual usar. Bueno vamos a intentar mostrar las diferencias de acuerdo a las necesides
de cada uno.
Tenemos que remarcar 3 puntos principales:
- API
- Sincronización.
- Crecimiento de información
- API
En el "The Java Programming Language "(Addison-Wesley, June 2000) Ken Arnold, James Gosling, y David Holmes describen que el Vector es analogo al ArrayList. Asi que el Api en perspectiva, las dos clases son muy similares, pero hay algunas pequeñas diferencias entre ellas.
- Sincronización
El Vector es sincronizado. Lo que implica que cada metodo tocado de un vector es threads safe. El ArrayList, por otro lado es de-sincronizado, haciendo no threads safe. La principal diferencia que podemos llegar a notar es cuando necesitamos mayor performances, es decir si no necesitamos colecciones threads-safe para que vamos a pagar el precio de la sincronizacion del vector?.
- Crecimiento de información
Tanto
ArrayList<E>
como Vector<E>
utilizan un objeto Array<E>
para almacenar los elementos internamente. Las colecciones de tipo Array<E>
, sin embargo, tienen un tamaño fijo que se determina de antemano al llamar al constructor. Esto implica que cuando sobrepasamos dicho tamaño hay que crear un nuevo Array<E>
y copiar el antiguo, lo que puede ser muy costoso computacionalmente. Por otro lado, si la capacidad máxima inicial del array fuera demasiado grande, estaríamos desperdiciando espacio.Por defecto
ArrayList<E>
y Vector<E>
utilizan arrays con capacidad para 10 elementos. Cuando el número de elementos sobrepasa la capacidad disponibleVector<E>
dobla el tamaño del array interno, mientras que ArrayList<E>
utiliza la fórmula (capacidad * 3) / 2 + 1.Para indicar valores que se ajusten lo máximo posible al uso que vamos a hacer de nuestra lista tanto
Vector<E>
como ArrayList<E>
cuentan, además de con un constructor vacío y un constructor al que pasar una colección con los elementos con los que inicializar el vector o la lista, con un constructor al que pasar un entero con la capacidad inicial de la colección.Vector<E>
cuenta también con un constructor extra mediante el que indicar el incremento en capacidad a utilizar cuando el número de elementos rebase la capacidad del vector, lo cuál puede ser muy interesante.
Java Player - Diferencias entre ArrayList y Vector
Reviewed by El lado oscuro de java
on
mayo 02, 2012
Rating:
No hay comentarios: