2011-05-07 10 views

Respuesta

7

Vector: nunca, a menos que una API lo requiera, porque es una clase, no una interfaz.

List: esta debería ser su colección predeterminada similar a una matriz. Es una interfaz así que cualquier cosa puede ser List si es necesario. (Y hay un montón de List implementaciones por ahí por ejemplo ArrayList, LinkedList, CopyOnWriteArrayList, ImmutableList, por diversos conjuntos de características)

Vector es multi-hilo, pero también lo es la envoltura Collections.synchronizedList().

matriz: raramente, si es requerido por una API. La otra gran ventaja de las matrices es que cuando se necesita una matriz de primitivas de longitud fija, el espacio de memoria requerido es bastante compacto, en comparación con un List<Integer> donde los enteros deben encasillarse en objetos Integer.

2

A Vector (o List) cuando no sabe de antemano cuántos elementos se van a insertar.

cuando sepa cuál es el número máximo de elementos en la vida útil de ese vector.

Dado que no existen penalizaciones de alto rendimiento cuando se usan List o Vector (cualquier colección para ese caso), siempre preferiría usarlas. Su flexibilidad es demasiado importante para no ser considerado.

Actualmente solo uso arrays cuando lo necesito. Ejemplo: cuando se usa una API que los requiere.

0

En primer lugar, ArrayList es una implementación más rápida que Vector (aunque no es seguro para subprocesos).

Las matrices son útiles cuando conoce la longitud de antemano y no cambiará demasiado (o no cambiará nada).

0

Al declarar un método, use List.

No utilice Vector, es una parte temprana del JDK y fue adaptada para trabajar con Collections.

Si hay un algoritmo muy sensible al rendimiento, un miembro de matriz privada puede ser útil. Si hay una necesidad de devolver sus contenidos o pasarlos a un método, generalmente es mejor construir un objeto a su alrededor, tal vez tan simple como Arrays.asList(thePrivateArray). Para una lista de seguridad de subprocesos: Collections.synchronizedList(Arrays.asList(thePrivateArray)). Para evitar la modificación de los contenidos de la matriz, normalmente utilizo Collections.unmodifiableList(Arrays.asList(thePrivateArray)).

Cuestiones relacionadas