Java provee un framework de colecciones muy rico conformado por un conjunto de interfaces y clases que las implementan. Una de estas implementaciones es el ArrayList, cuya funcionalidad básica se describe aquí.
Una instancia de la clase java.util.ArrayList constituye una colección lineal ordenada, de crecimiento dinámico, que puede contener elementos duplicados, y ofrece acceso posicional en tiempo constante. Esta lista está indexada comenzando desde cero; es decir que el primer elemento de la lista se encuentra en esa posición.
Cada vez que se agrega un elemento, la lista por default lo ubica en la última posición; no obstante esto, pueden agregarse elementos en otras posiciones, lo cual genera el desplazamiento de una posición en sentido creciente de todos los elementos que se encuentren ubicados a partir del lugar en que se agrega el nuevo elemento.
También pueden eliminarse elementos de cualquier posición de la lista. Cuando esto ocurre, la lista genera un desplazamiento en sentido contrario al anteriormente descripto con el fin de no dejar espacios vacíos (por supuesto que este desplazamiento no ocurre cuando se elimina el último elemento de la lista).