Esta interfaz se utiliza en muchas ocasiones cuando se programa en Java, independientemente que se esté desarrollando en mas de alguna ocasión se es utilizada.
Ésta interfaz tiene muchas características y también las clases que la implementan, ya se tienen clases que algún comportamieno en particular y también se puede implementar una lista haciendo uso de la interfaz y/o heredando el comportamiento de otras clases y hacer cambios conforme a ciertos requerimientos.

A diferencia de java.util.Set, java.util.List permite el ingreso de elementos duplicados evaluados con lo funcion equals().

En definicion, una lista es una colección ordenada de elementos, también conocida como “secuencia”, las clases que implementan ésta interfaz tiene el control de la posición en donde están insertado los elementos.
Las clases que implementan esta interfaz son las siguientes:
  • AbstractList

    Esta clase abstracta provee la estructura de una lista, se utiliza para realizar una lista de acceso aleatorio (como un arreglo).

    Se deben de implementar, obligatoriamente, los métodos get (int) y size (). Pero, para implementar una lista modificable se deben de implementar, adicionalmente, los métodos set(int, E). Y si la lista es de tipo variable se deben de implementar los métodos add(int, E) y remove(int).

    No se debe de proveer una implementación para iterar, ya que en está clase ya está implementado.

  • AbstractSequencialList

    Esta clase abstracta que hereda de la clase AbstractList, varia en que el acceso ya no es aleatorio si no que es un acceso secuencial (como un LinkedList).

    Además, obligatoriamente, se debe implementar el iterador de la lista, especificamente los métodos ListIterator(E) y size(). Para una lista no modificable, se debe de implementar los métodos hastNext, next, hasPrevious, previous e index.

    Para una lista modificable, se debe implementar el método set(int, E). Y para una lista de tamaño variable, se debe de implementar los métodos remove y add.

  • ArrayList

    Hereda de la clase AbstractList, es una implementación de una lista de tamaño variable. Permite todo tipo de elementos e incluso valores nulos, es casi equivalente a la clase Vector pero con la diferencia que ArrayList no es sincronizada (lo cual se debe de tener cuidado a la hora de trabajar concurrentemente).

    Tiene una capacidad de almacenamiento, con cada elemento ingresado la capacidad crece automaticamente.

  • AttributeList

    Hereda de la clase ArrayList, se encuentra dentro del paquete javax.management, se diferencia de la clase padre en que solo permite elementos de tipo javax.management.Attribute que es una implementación de un bean de manera general.

  • CopyOnWriteArrayList

    Esta clase es muy eficiente cuando se trabaja concurrentemente. Los métodos para cambiar la lista no están suportados (remove, set y add) por lo cual se genera una excepción.

    Permite todo tipo de elementos incluidos valores nulos.

  • LinkedList

    Hereda de la clase AbstractSequencialList. Permite todo tipo de elementos incluidos valores nulos, provee los métodos para obtener (get), remover (remove) e insertar (insert) elementos al inicio y al final de la lista.

    Estas operaciones permiten vincular listas que pueden ser utilizada como pilas, colas y doble listas.

  • RoleList

    Hereda de la clase ArrayList, es parecida a la clase AttributeList, con la diferencia que permite solo elementos de tipo javax.management.relation.Role, que encapsulan un nombre y un listado de relaciones.

  • RoleUnresolvedList

    Parecida a la anterior, pero permite solo elementos de tipo javax.management.relation.RoleUnresolved, que tiene una funcionalidad parecida a la clase Role.

  • Stack

    Es una lista que representa el comportamiento de una pila (LIFO) y hereda de la clase Vector pero tiene otros métodos que permiten su comportamiento.

  • Vector

    Ésta clase se parece mucho a ArrayList con la diferencia que está sincronizada. Esta clase actualmente se encuentra obsoleta y para manejar la sincronización se recomienda usar ArrayList haciendo uso de Collection.synchronizedList.


Ésto es un pequeño resumen y definición de la interface java.util.List, si me he confundido en algo, se agradecerá hacerlo saber.

Referencias