Java Player - Diferencias entre ArrayList y Vector



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 Java Player - Diferencias entre ArrayList y Vector Reviewed by El lado oscuro de java on mayo 02, 2012 Rating: 5

No hay comentarios:

Con la tecnología de Blogger.