En la interfaz List se define como una sucesión de elementos, lo que quiere decir, en este si poseen un orden, ademas a diferencia de la colección Set este si puede tener elementos duplicados. En las listas cada elemento estará en una determinada posición o indice.
A parte de los métodos heredados de Collection, esta añade métodos que nos permite mejorar los siguientes puntos:
Tal como observamos en la colección Set, la interfaz List nos permite trabajar con varios tipos de implementaciones realizadas dentro de la plataforma Java. Vamos a analizar cada una de ellas:
ArrayListEsta es la implementación mas típica. Se basa en un array redimensionable en el cual puede crecer según crece su colección de elementos. Es la que mejor rendimiento tiene sobre la mayoría de situaciones.
Lo primero que debemos resolver es como declaramos una lista, para esto seguimos la estructura:
List ejemploLista = new ArrayList();
Este tipo de lista nos permite almacenar cualquier tipo de dato, pero este enfoque debemos saber que ya ha quedado obsoleto, es mejor designar el tipo de dato que se va a almacenar. Por ejemplo para declarar una lista donde almacenemos datos de tipo String, podemos hacer lo siguiente:
List<String> ejemploLista = new ArrayList<String>();
Ahora que tenemos nuestra lista creada, vamos a incluir datos en ella, para esto utilizamos el método "add":
List<String> ejemploLista = new ArrayList<String>(); ejemploLista.add("Juan"); ejemploLista.add("Pedro"); ejemploLista.add("José"); ejemploLista.add("María"); ejemploLista.add("Sofía");
Recordemos que existe un método el cual nos permite agregar el indice en el cual queremos insertar un elemento. Podemos obtener la cantidad de elementos que posee la lista:
ejemploLista.size();
Ahora vamos a consultar un valor de la lista, para esto utilizaremos el método "get":
ejemploLista.get(0);
El valor de 0 que estamos suministrado, es el indice que se encuentra de la información que queremos. En el ejemplo que estamos construyendo el valor que existe en el indice 0 esta el string Pedro
Si queremos acceder y mostrar por consola cada uno de los elementos que contiene la lista, podemos realizar lo siguiente
for (int i = 0; i < ejemploLista.size(); i++) { System.out.println(ejemploLista.get(i)); }
Esto nos dará como resultado lo siguiente:

Cuando queremos eliminar un determinado elemento podemos utilizar el método "remove":
ejemploLista.remove(0);
Donde nuevamente el 0 representa el índice que queremos eliminar. Otra forma de eliminar un registro es por su nombre:
ejemploLista.remove("Juan");
Para ir finalizando este tipo de Lista, vamos a visualizar otro de los métodos que podemos utilizar. Si queremos extraer una lista que contenga los nombres entre un índice y otro podemos utilizar:
ejemploLista.subList(0, 2)
El cual tiene una lista derivada de la principal, con el ejemplo que venimos trabajando esta contendría dos valores que son [Juan,Pedro]
Como observamos existen diferentes tipos de métodos para el manejo de este tipo de lista, ahora te toca a ti, aquellos métodos que falten puedes implementarlos con base al ejemplo que hemos trabajado
esta implementación permite que mejore el rendimiento en ciertas ocasiones. Esta implementación se basa en una lista doblemente enlazada de los elementos, teniendo cada uno de los elementos un puntero al anterior y al siguiente elemento.
Para aprovechar las ventajas que tenemos en el coste temporal al trabajar con los extremos de la lista, se proporcionan métodos propios para acceder a ellos en tiempo constante
Nota: Hemos de destacar que estos métodos nos permitirán trabajar con la lista como si se tratase de una pila o de una cola. En el caso de la pila realizaremos la inserción y la extracción de elementos por el mismo extremo, mientras que para la cola insertaremos
por un extremo y extraeremos por el otro.
Podemos observar un poco de este tipo de lista con el siguiente ejemplo:
public class LinkedListPrueba{ public static void main(String args[]) { // Creamos el objeto de la clase linked list LinkedList<String> object = new LinkedList<String>(); // Añadimos los elementos a la lista linked list object.add("A"); object.add("B"); object.addLast("C"); object.addFirst("D"); object.add(2, "E"); object.add("F"); object.add("G"); System.out.println("Linked list : " + object); // Removemos algunos de los elementos de la lista linked list object.remove("B"); object.remove(3); object.removeFirst(); object.removeLast(); System.out.println("Linked list after deletion: " + object); // Buscamos los elementos en la lista linked list boolean status = object.contains("E"); if(status) System.out.println("List contains the element 'E' "); else System.out.println("List doesn't contain the element 'E'"); // Numero de elementos en la lista linked list int size = object.size(); System.out.println("Size of linked list = " + size); // Mostramos un elemento y lo sobreescribimos linked list Object element = object.get(2); System.out.println("Element returned by get() : " + element); object.set(2, "Y"); System.out.println("Linked list after change : " + object); } }
Linked list : [D, A, E, B, C, F, G] Linked list after deletion: [A, E, F] List contains the element 'E' Size of linked list = 3 Element returned by get() : F Linked list after change : [A, E, Y]
En esta parte del curso observamos una parte de las colecciones conocidas como Listas, de las cuales visualizamos como son utilizadas en Java. Ahora tu puedes seguir trabajando y revisando con algunos ejemplos de como utilizar esta colección.