Un ArrayList es básicamente un array dinámico que nos permite almacenar datos sin la limitación de los arrays normales que precisan definir un tamaño.
La clase ArrayList en Java, implementa la super clase interface list, funciona similar a un vector, con la ventaja de que su incremento es solo el 50% de su capacidad.
¿Por qué es una ventaja? Porque utiliza menos recursos que el vector. Esta es una de las grandes diferencias con los vectores.
Para utilizar un ArrayList, debemos llamar al paquete java.util, en la primera línea de nuestro programa:
import java.util.ArrayList;
En los ArrayList podemos eliminar con remove() y el nombre del elemento en el caso de los String, también podemos hacerlo con el número de posición.
Para agregar elementos a un ArrayList utilizamos el método add() y entre paréntesis el elemento a agregar.
Podemos buscar un elemento con el método contains(), especificando dentro de los paréntesis el elemento a buscar.
Este método es para obtener en cualquier momento el número de elementos del ArrayList.
Para recorrer un ArrayList, existen varias maneras, la más utilizada es implementar una estructura for.
Tenemos dos formas de hacerlo a través de un ciclo for: La forma reducida y la forma clásica o completa
for (String nombre: lista) {
System.out.println("Este es el recorrido con un for reducido " + nombre);
}
for (int i = 0; i < lista.size(); i++) {
System.out.println("Este es el recorrido con un for clasico: " + lista.get(i));
}
Hay otras formas de recorrer un ArrayList, pero las presentadas son las más usadas.
Si necesitamos hacer esta conversión, podemos realizarla a través de un for en su forma completa.
String array[] = new String[lista.size()];
for (int i = 0; i < lista.size(); i++) {
array[i] = lista.get(i);
}
for (String elemento: array) {
System.out.println("Aquí mostramos el array: " + elemento);
}
Escogeremos usar un ArrayList, cuando la tarea a ejecutar sea secuencial.
ArrayList no es recomendable para programación multihilo o concurrente (ejecución de más de una tarea a la vez), porque no es seguro para este tipo de proceso.
En definitiva, usaremos vector en programación concurrente y arraylist en programación secuencial.
import java.util.ArrayList;
public class arrayList {
public static void main(String[] args) {
ArrayList < String > lista = new ArrayList < String > (); //declaración del arraylist
lista.add("ElementoA"); //cargamos la lista
lista.add("ElementoB");
lista.add("ElementoC");
System.out.println("contenido: " + lista); //mostramos el contenido
lista.remove("ElementoB"); //eliminamos un elemento
System.out.println("contenido: " + lista); //mostramos el contenido
//recorrer un ArrayList con un for reducido:
for (String nombre: lista) {
System.out.println("Este es el recorrido con un for reducido " + nombre);
}
//recorrer un ArrayList con un for clásico o completo:
for (int i = 0; i < lista.size(); i++) {
System.out.println("Este es el recorrido con un for clasico: " + lista.get(i));
}
//convirtiendo un ArrayList en un array clásico
String array[] = new String[lista.size()];
for (int i = 0; i < lista.size(); i++) {
array[i] = lista.get(i);
}
for (String elemento: array) {
System.out.println("Aqui mostramos el array: " + elemento);
}
}
}
También podemos hacer la conversión utilizando un objeto:
for (Object arrayObjeto: lista.toArray()) {
System.out.println("esto es con object: " + arrayObjeto.toString());
El método toArray() nos permite convertir un ArrayList en un array.
El método toString() lo utilizamos para convertir a String (es decir, a una cadena de texto) cualquier objeto Java.