1. Declaración de un objeto ArrayList
  2. Creación de un ArrayList
  3. Añadir elementos al final de la lista
  4. Insertar elementos en una determinada posición
  5. Suprimir elementos de la lista
  6. Consulta de un determinado elemento de la lista
  7. Modificar un elemento contenido en la lista
  8. Buscar un elemento
  9. Recorrer el contenido de la lista
  10. Otros métodos de interés

 

La clase ArrayList permite el almacenamiento de datos en memoria de forma similar a los arrays convencionales, pero con la gran ventaja de que el número de elementos que puede almacenar es dinámico. La cantidad de elementos que puede almacenar un array convencional está limitado por el número que se indica en el momento de crearlo o inicializarlo. Los ArrayList, en cambio, pueden almacenar un número variable de elementos sin estar limitados por un número prefijado.

Declaración de un objeto ArrayList

La declaración genérica de un ArrayList se puede hacer con un formato similar al siguiente:

ArrayList nombreDeLista;

Como se puede observar, de esta manera no se indica el tipo de datos que va a contener. Suele ser recomendable especificar el tipo de datos que va a contener la lista para que así se empleen las operaciones y métodos adecuados para el tipo de datos manejado. Para especificar el tipo de datos que va a contener la lista se debe indicar entre los caracteres '<' y '>' la clase de los objetos que se almacenarán:

ArrayList<nombreClase> nombreDeLista;

En caso de almacenar datos de un tipo básico de Java como char, int, double, etc, se debe especificar el nombre de la clase asociada: Character, Integer, Double, etc.

Ejemplos:

ArrayList<String> listaPaises;
ArrayList<Integer> edades;

Creación de un ArrayList

Para crear un ArrayList se puede seguir el siguiente formato:

nombreDeLista = new ArrayList();

Como suele ser habitual, se puede declarar la lista a la vez que se crea:

ArrayList<nombreClase> nombreDeLista = new ArrayList();

Por ejemplo:

ArrayList<String> listaPaises = new ArrayList();

La clase ArrayList forma parte del paquete java.util, por lo que hay que incluir en la parte inicial del código la importación de ese paquete (import java.util.ArrayList;). Como siempre, desde NetBeans se puede solucionar rápidamente desde el menú contextual (clic derecho del ratón) del código fuente, escogiendo la opción "Reparar importaciones".

Añadir elementos al final de la lista

El método add de la clase ArrayList posibilita añadir elementos. Los elementos que se van añadiendo, se colocan después del último elemento que hubiera en el ArrayList. En primer elemento que se añada se colocará en la posición 0.

boolean add(Object elementoAInsertar);

Ejemplos:

        ArrayList<String> listaPaises = new ArrayList();
listaPaises.add("España"); //Ocupa la posición 0
listaPaises.add("Francia"); //Ocupa la posición 1
listaPaises.add("Portugal"); //Ocupa la posición 2
        //Se pueden crear ArrayList para guardar datos numéricos de igual manera
ArrayList<Integer> edades = new ArrayList();
edades.add(22);
edades.add(31);
edades.add(18);

Insertar elementos en una determinada posición

Con los arrayList también es posible insertar un elemento en una determinada posición desplazando el elemento que se encontraba en esa posición, y todos los siguientes, una posición más.

Para ello, se emplea también el método add indicando como primer parámetro el número de la posición donde se desea colocar el nuevo elemento:

void add(int posición, Object elementoAInsertar);

Ejemplo:

        ArrayList<String> listaPaises = new ArrayList();
listaPaises.add("España");
listaPaises.add("Francia");
listaPaises.add("Portugal");
//El orden hasta ahora es: España, Francia, Portugal
listaPaises.add(1, "Italia");
//El orden ahora es: España, Italia, Francia, Portugal

Si se intenta insertar en una posición que no existe, se produce una excepción (IndexOutOfBoundsException)

Suprimir elementos de la lista

Si se quiere que un determinado elemento se elimine de la lista se puede emplear el método remove al que se le puede indicar por parámetro un valor int con la posición a suprimir, o bien, se puede especificar directamente el elemento a eliminar si es encontrado en la lista.

Object remove(int posición)
boolean remove(Object elementoASuprimir)

Se puede ver en el siguiente ejemplo los dos posibles usos:

        ArrayList<String> listaPaises = new ArrayList();
listaPaises.add("España");
listaPaises.add("Francia");
listaPaises.add("Portugal");
//El orden hasta ahora es: España, Francia, Portugal
listaPaises.add(1, "Italia");
//El orden ahora es: España, Italia, Francia, Portugal
listaPaises.remove(2);
//Eliminada Francia, queda: España, Italia, Portugal
listaPaises.remove("Portugal");
//Eliminada Portugal, queda: España, Italia

Consulta de un determinado elemento de la lista

El método get permite obtener el elemento almacenado en una determinada posición que es indicada con un parámetro de tipo int:

Object get(int posición)

Con el elemento obtenido se podrá realizar cualquiera de las operaciones posibles según el tipo de dato del elemento (asignar el elemento a una variable, incluirlo en una expresión, mostrarlo por pantalla, etc). Por ejemplo:

        System.out.println(listaPaises.get(3));
//Siguiendo el ejemplo anterior, mostraría: Portugal

Modificar un elemento contenido en la lista

Es posible modificar un elemento que previamente ha sido almacenando en la lista utilizando el método set. Como primer parámetro se indica, con un valor int, la posición que ocupa el elemento a modificar, y en el segundo parámetro se especifica el nuevo elemento que ocupará dicha posición sustituyendo al elemento anterior.

Object set(int posición, Object nuevoElemento)

Por ejemplo, si en el ejemplo de la lista de países se desea modificar el que ocupe la posición 1 (segundo en la lista) por "Alemania":

        listaPaises.set(1, "Alemania");

Buscar un elemento

La clase ArrayList facilita mucho las búsquedas de elementos gracias al método indexOf que retorna, con un valor int, la posición que ocupa el elemento que se indique por parámetro.

int indexOf(Object elementoBuscado)

Si el elemento se encontrara en más de una posición, este método retorna la posición del primero que se encuentre. El método lastIndexOf obtiene la posición del último encontrado.

Ejemplo que comprueba si Francia está en la lista, y muestra su posición.

        String paisBuscado = "Francia";
int pos = listaPaises.indexOf(paisBuscado);
if(pos!=-1)
System.out.println(paisBuscado + " se ha encontrado en la posición: "+pos);
else
System.out.println(paisBuscado + " no se ha encontrado");

En caso de que no se encuentre en la lista el elemento buscado, se obtiene el valor -1.

Recorrer el contenido de la lista

Es posible obtener cada uno de los elementos de la lista utilizando un bucle con tantas iteraciones como elementos contenga, de forma similar a la empleada con los arrays convencionales. Para obtener el número de elementos de forma automática se puede emplear el método size() que devuelve un valor int con el número de elementos que contiene la lista.

        for(int i=0; i<listaPaises.size(); i++)
System.out.println(listaPaises.get(i));

También se puede emplear el otro formato del bucle for en el que se va asignando cada elemento de la lista a una variable declarada del mismo tipo que los elementos del ArrayList:

        for(String pais:listaPaises)
System.out.println(pais);

(Como implementación de la clase Collection, los ArrayList pueden recorrerse utilizando Iterator)

Otros métodos de interés