ArrayList, LinkedList y Vector

3962 vistas

El API propone dos implementaciones concretas para las listas (java.util.List). Una lista es una serie ordenada de elementos (los elementos pueden ser añadidos en varios sitios de la lista).

java.util.ArrayList:
Un java.util.ArrayList usa una tabla interna para ordenar los datos. Un ArrayList proporciona un acceso a los elementos por su Ãndice con alto rendimiento y optimizado por operaciones de inserción/eliminación de elementos a final de lista.
Complejidad: las operaciones size, isEmpty, get, set, iterator se ejecutan en tiempo constante.
Las operaciones de inserción/eliminación se ejecutan en tiempo constante pequeño.

java.util.LinkedList:
Un java.util.LinkedList usa una lista encadenada para ordenar los datos. La inserción y la eliminación de elementos es muy rápida sea cual sea su posición, pero el accedo a los valores por su Ãndice es lento.
Complejidad: Las operaciones size, isEmpty, add, remove, set, get se ejecutan en tiempo constante. Todos los métodos que hacen referencia a un Ãndice se ejecutan en tiempo O(n).

java.util.Vector:
La clase java.util.Vector es una clase heredada de Java 1 y se conserva por razones de compatibilidad por lo que no se deberÃa de usar en nuevos programas. En todo caso, mejor usar un ArrayList.
Nota: esta clase es "thread-safe", es decir, varios procesos pueden usarla al mismo tiempo sin problemas.
Complejidad: lo mismo que para ArrayList, más el tiempo de sincronización de los métodos.