Al principio el profesor usa ArrayList y luego usa List. ¿Cuál es la diferencia entre estas dos?
Al principio el profesor usa ArrayList y luego usa List. ¿Cuál es la diferencia entre estas dos?
Hola Yorman.
Bueno, lo primero que debemos entender respecto de estos dos elementos es que List es una interface, y ArrayList es una clase del framework de Collections (o colecciones) de Java.
Entonces, cuando se usa List lo que estamos haciendo es crear un arreglo estático, mientras que ArrayList crea un arreglo dinámico, y en ambos podemos almacenar objetos.
¿Y cuál es la diferencia? Pues, un List no puede expandirse tras ser definido, porque como ya lo hemos mencionado antes, es un arreglo estático. Por el contrario, si usamos ArrayList podemos expandir nuestra estructura tantas veces como lo veamos necesario.
En estricto rigor, es mejor usar la interface List para tomar ventaja del polimorfismo que nos entrega. De esta manera podemos cambiar la estructura de nuestra lista según nuestras necesidades sin tener que cambiar el código, por ejemplo:
ArrayList<String> nombres = new ArrayList<String>();
Pero descubres en el futuro que necesitas que esa lista tenga un comportamiento diferente, que se comporte más bien como un LinkedList que tiene otras particularidades. El problema es que tu lista ya es un ArrayList y eso quiere decir que al convertirlo en LinkedList tendrás que revisar cada call hecho a sus métodos para modificarlos de acuerdo a LinkedList y si tu aplicación tiene mucho código, tendrás un problema serio de escalabilidad en tus manos.
En cambio, si creas la lista de la siguiente manera:
List<String> nombres = new ArrayList<String>();
Entonces ahora, cuando descubras que tu ArrayList realmente debía comportarse como un LinkedList, podrás hacer lo siguiente:
List<String> nombres = new LinkedList<String>();
Y ya solo podrás modificar el comportamiento de los métodos que lo requieran, y no de absolutamente todo el código. De esta manera estás utilizando el Polimorfismo a tu favor. Es conveniente utilizar este método cuando no estás seguro si tu lista tendrá que cambiar su comportamiento a futuro.
Acabo de entender este tema gracias a ti. ¡Muchas gracias Jorge!
Entonces no sería más simple que todas siempre fuera List?