Colecciones: la clase ArrayList EJEMPLOS

Una colección en Java es una estructura de datos que permite almacenar muchos valores del mismo tipo; por tanto, conceptualmente es prácticamente igual que un array. Según el uso y según si se permiten o no repeticiones, Java dispone de un amplio catálogo de colecciones: ArrayList (lista), ArrayBlockingQueue (cola), HashSet (conjunto), Stack (pila), etc. En este manual estudiaremos la colección ArrayList. Un ArrayList es una estructura en forma de lista que permite almacenar elementos del mismo tipo (pueden ser incluso objetos); su tamaño va cambiando a medida que se añaden o se eliminan esos elementos. Nos podemos imaginar un ArrayList como un conjunto de celdas o cajoncitos donde se guardan los valores, exactamente igual que un array convencional. En la práctica será más fácil trabajar con un ArrayList. En capítulos anteriores hemos podido comprobar la utilidad del array; es un recurso imprescindible que cualquier programador debe manejar con soltura. No obstante, el array presenta algunos inconvenientes. Uno de ellos es la necesidad de conocer el tamaño exacto en el momento de su creación. Una colección, sin embargo, se crea sin que se tenga que especificar el tamaño; posteriormente se van añadiendo y quitando elementos a medida que se necesitan. Trabajando con arrays es frecuente cometer errores al utilizar los índices; por ejemplo al intentar guardar un elemento en una posición que no existe (índice fuera de rango). Aunque las colecciones permiten el uso de índices, no es necesario indicarlos siempre. Por ejemplo, en una colección del tipo ArrayList, cuando hay que añadir el elemento "Amapola", se puede hacer simplemente flores.add("Amapola"). Al no especificar índice, el elemento "Amapola" se añadiría justo al final de flores independientemente del tamaño y del número de elementos que se hayan introducido ya. La clase ArrayList es muy similar a la clase Vector. Ésta última está obsoleta y, por tanto, no se recomienda su uso.
Las operaciones más comunes que se pueden realizar con un objeto de la clase ArrayList son las siguientes:  
add(elemento) :
Añade un elemento al final de la lista.  


add(indice, elemento):
Inserta un elemento en una posición determinada,   desplazando el resto de elementos hacia la derecha.

clear():
  Elimina todos los elementos pero no borra la lista.
contains(elemento):
    Devuelve true si la lista contiene el elemento que se      especifica y false en caso contrario.

get(indice):
   Devuelve el elemento de la posición que se indica entre paréntesis. 
indexOf(elemento):
  Devuelve la posición de la primera ocurrencia del   elemento que se indica entre
paréntesis.
isEmpty():
  Devuelve true si la lista está vacía y false en caso de        tener algún elemento.
remove(indice):
Elimina el elemento que se encuentra en una posición determinada.
remove(elemento):
   Elimina la primera ocurrencia de un elemento. set(indice, elemento) Machaca el elemento que se encuentra en una determinada posición con el elemento que se pasa como parámetro.
size():
 Devuelve el tamaño (número de elementos) de la lista.
toArray():
 Devuelve un array con todos y cada uno de los elementos que contiene la lista.

Definición de un ArrayList e inserción, borrado y modificación de sus elementos






 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import java.util.ArrayList;
public class EjemploArrayList01 {
 public static void main(String[] args) {
  ArrayList<String> a = new ArrayList<String>();
  System.out.println("Nº de elementos: " + a.size());
  a.add("rojo");
  a.add("verde");
  a.add("azul");
  System.out.println("Nº de elementos: " + a.size());
  a.add("blanco");
  System.out.println("Nº de elementos: " + a.size());
  System.out.println("El elemento que hay en la posición 0 es " + a.get(0));
  System.out.println("El elemento que hay en la posición 3 es " + a.get(3));
 }
}

Observa que al crear un objeto de la clase ArrayList hay que indicar el tipo de dato que se almacenará en las celdas de esa lista. Para ello se utilizan los caracteres < y >. No hay que olvidar los paréntesis del final. 

Es necesario importar la clase ArrayList para poder crear objetos de esta clase, para ello debe aparecer al principio del programa la línea import java.util.ArrayList;. Algunos IDEs (por ej. Netbeans) insertan esta línea de código de forma automática. 



En el siguiente ejemplo se muestra un ArrayList de números enteros. 



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import java.util.ArrayList;
public class EjemploArrayList011 {
 public static void main(String[] args) {
  ArrayList<Integer> a = new ArrayList<Integer>();
  a.add(18);
  a.add(22);
  a.add(-30);
  System.out.println("Nº de elementos: " + a.size());
  System.out.println("El elemento que hay en la posición 1 es " + a.get(1));
 }
}

Se define la estructura de la siguiente manera:ArrayList<Integer> a = new ArrayList<Integer>();

Fíjate que no se utiliza el tipo simple int sino el wrapper Integer. Recuerda que los wrapper son clases que engloban a los tipos simples y les añaden nuevas funcionalidades (p. ej. permiten tratar a las variables numéricas como objetos). El wrapper de int es Integer, el de float es Float, el de double es Double, el de long es Long, el de boolean es Boolean y el de char es Character.
En el siguiente ejemplo podemos ver cómo extraer todos los elementos de una lista a la manera tradicional, con un bulce
for. 
 



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import java.util.ArrayList;
public class EjemploArrayList02 {
 public static void main(String[] args) {
  ArrayList<String> a = new ArrayList<String>();
  a.add("rojo");
  a.add("verde");
  a.add("azul");
  a.add("blanco");
  a.add("amarillo");
  System.out.println("Contenido de la lista: ");
  for(int i=0; i < a.size(); i++) {
   System.out.println(a.get(i));
  }
 }
}
Si estás acostumbrado al for clásico, habrás visto que es muy sencillo recorrer todos los elementos del ArrayList. No obstante, al trabajar con colecciones es recomendable usar el for al estilo foreach como se muestra en el siguiente ejemplo. Como puedes ver, la sintaxis es más corta y no se necesita crear un índice para recorrer la estructura.



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import java.util.ArrayList;
public class EjemploArrayList03 {
 public static void main(String[] args) {
  ArrayList<String> a = new ArrayList<String>();
  a.add("rojo");
  a.add("verde");
  a.add("azul");
  a.add("blanco");
  a.add("amarillo");
  System.out.println("Contenido de la lista: ");
  for(String color: a) {
   System.out.println(color);
  }
 }
}
Fíjate en estas líneas:for(String color: a) { System.out.println(color);
}
El significado de este código sería el siguiente:for(String color: a)→ Saca uno a uno todos los elementos de a y ve metiéndolos en una variable de nombrecolor.System.out.println(color);→ Muestra por pantalla el contenido de la variable color. Veamos ahora en otro ejemplo cómo eliminar elementos de un ArrayList. Se utiliza el método remove() y se puede pasar como parámetro el índice del elemento que se quiere eliminar, o bien el valor del elemento. O sea, a.remove(2) elimina el elemento que se encuentra en la posición 2 de a mientras que a.remove("blanco") elimina el valor "blanco".


Es importante destacar que el
ArrayList se reestructura de forma automática después del borrado de cualquiera de sus elementos. 
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.ArrayList;
public class EjemploArrayList04 {
public static void main(String[] args) {
  ArrayList<String> a = new ArrayList<String>();
  a.add("rojo");
  a.add("verde");
  a.add("azul");
  a.add("blanco");
  a.add("amarillo");
  a.add("blanco");
  System.out.println("Contenido de la lista: ");
  for(String color: a) {
   System.out.println(color);
  }
  if (a.contains("blanco")) {
   System.out.println("El blanco está en la lista de colores");
  } a
  .remove("blanco");
  System.out.println("Contenido de la lista después de quitar la " +
  "primera ocurrencia del color blanco: ");
  for(String color: a) {
   System.out.println(color);
  } a
  .remove(2);
  System.out.println("Contenido de la lista después de quitar el " +
  "elemento de la posición 2: ");
  for(String color: a) {
   System.out.println(color);
  }
 }
}
A continuación se muestra un ejemplo en el que se “machaca” una posición del ArrayList. Al hacer a.set(2, "turquesa"), se borra lo que hubiera en la posición 2 y se coloca el valor "turquesa". Sería equivalente a hacer a[2] = "turquesa" en caso de que a fuese un array tradicional en lugar de un ArrayList.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import java.util.ArrayList;
public class EjemploArrayList05 {
 public static void main(String[] args) {
  ArrayList<String> a = new ArrayList<String>();
  a.add("rojo");
  a.add("verde");
  a.add("azul");
  a.add("blanco");
  a.add("amarillo");
  System.out.println("Contenido del vector: ");
  for(String color: a)
  System.out.println(color);
  a.set(2, "turquesa");
  System.out.println("Contenido del vector después de machacar la posición 2: ");
  for(String color: a) {
   System.out.println(color);
  }
 }
}
El método add permite añadir elementos a un ArrayList como ya hemos visto. Por ejemplo, a.add("amarillo") añade el elemento "amarillo" al final de a. Este método se puede utilizar también con un índice de la forma a.add(1, "turquesa"). En este caso, lo que se hace es insertar en la posción indicada. Lo mejor de todo es que el ArrayList se reestructura de forma automática desplazando el resto de elementos.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import java.util.ArrayList;
public class EjemploArrayList06 {
 public static void main(String[] args) {
  ArrayList<String> a = new ArrayList<String>();
  a.add("rojo");
  a.add("verde");
  a.add("azul");
  a.add("blanco");
  a.add("amarillo");
  System.out.println("Contenido de la lista: ");
  for(String color: a) {
   System.out.println(color);
  } 
  a.add(1, "turquesa");
  System.out.println("Contenido del vector después de insertar en la posición 1: ");
  for(String color: a) {
   System.out.println(color);
  }
 }
}

Compartir

0 Comment to "Colecciones: la clase ArrayList EJEMPLOS"

Publicar un comentario