En Java, tanto List
como ArrayList
son conceptos fundamentales al trabajar con colecciones. Sin embargo, es importante entender que no son lo mismo y que tienen propósitos y características distintas. A continuación, se detalla la diferencia entre ambas.
List
: La Interfaz
List
es una interfaz en el framework de colecciones de Java, que define una estructura de datos que puede contener elementos en un orden específico, permite duplicados y ofrece métodos para acceder, modificar y eliminar elementos.
Al ser una interfaz, List
no puede ser instanciada directamente. En su lugar, se utilizan clases concretas que implementan List
, como ArrayList
, LinkedList
, y Vector
.
List
:
List
es una interfaz genérica, lo que significa que puedes definir el tipo de elementos que almacenará.
List
, puedes asignarle cualquier implementación de List
(como ArrayList
o LinkedList
), lo que permite flexibilidad y facilita el cambio de la implementación subyacente.
Ejemplo de declaración de una List
:
List<String> miLista = new ArrayList<>();
ArrayList
: La Implementación
ArrayList
es una clase que implementa la interfaz List
. Se basa en un array dinámico, lo que significa que puede cambiar de tamaño automáticamente a medida que se añaden o eliminan elementos.
ArrayList
:
ArrayList
maneja automáticamente la capacidad interna del array, expandiéndolo según sea necesario.
Ejemplo de uso de un ArrayList
:
ArrayList<String> miArrayList = new ArrayList<>();
miArrayList.add("Elemento 1");
miArrayList.add("Elemento 2");
1. Tipo: List
es una interfaz, mientras que ArrayList
es una implementación concreta de esa interfaz.
2. Instanciación: No puedes crear una instancia de List
directamente, pero puedes crear una instancia de ArrayList
.
3. Flexibilidad: Al usar List
como tipo de variable, puedes cambiar fácilmente entre diferentes implementaciones (ArrayList
, LinkedList
, etc.) sin modificar el código que utiliza esa lista.
1. Uso Polimórfico de List:
List<Integer> numeros = new ArrayList<>();
numeros.add(1);
numeros.add(2);
2. Cambio de Implementación:
List<String> nombres = new LinkedList<>();
nombres.add("Ana");
nombres.add("Luis");
Aquí, al cambiar la implementación a LinkedList
, el código que utiliza nombres
no necesita modificaciones.
Jorge García
Fullstack developer