Hoy veremos cómo iterar o recorrer un ArrayList en Java. Recordemos que un ArrayList sirve para tener una lista de elementos de cualquier clase, además de que la misma se puede modificar (hacer crecer o eliminar elementos) a diferencia de los arreglos.
Vamos a ver 3 métodos para poder recorrer un ArrayList en Java; el primero es un for
sin índice (también llamado forEach
), el segundo es usando un ciclo for con un contador y el tercero es usar la función forEach
del ArrayList.
Recorrer ArrayList en Java
Comenzamos definiendo un ArrayList y agregándole elementos. En este caso es un ArrayList
de tipo String
pero recordemos que se puede tener un ArrayList de cualquier tipo.
/*
* Creamos un ArrayList, recordemos que un ArrayList puede ser de cualquier
* tipo; para no complicar las cosas haremos un ArrayList de tipo String
*/
ArrayList<String> canciones = new ArrayList<>();
// Le agregamos datos
canciones.add("Ashes to ashes");
canciones.add("Beds are burning");
canciones.add("It's only rock 'n' Roll (But I like it)");
Ahora es momento de recorrerlo.
Método 1
El primer método usa lo que yo llamo un for sin índice o un for each:
System.out.println("Recorriendo con método 1");
// Método 1
for (String cancion : canciones) {
System.out.println(cancion);
}
La sintaxis de este método es:
for(Tipo variable: arrayList)
Si, por ejemplo, fuera un ArrayList de Mascota, entonces sería:
for(Mascota m: mascotas)
Método 2
El siguiente método es como hacer un ciclo for normal desde 0
hasta N
. Para obtener la longitud del ArrayList invocamos al método size
, y para recorrer el ArrayList en Java hacemos un ciclo desde 0 hasta size
.
// Método 2
for (int x = 0; x < canciones.size(); x++) {
String cancion = canciones.get(x);
System.out.println(cancion);
}
En este caso obtenemos el índice en cada paso, y para obtener el valor del ArrayList invocamos a get
, pasándole el índice.
Método 3
Veamos el tercer método, el cual invoca a forEach
del ArrayList y le pasa una función que será llamada por cada elemento.
// Método 3
canciones.forEach((cancion) -> {
System.out.println(cancion);
});
Lo único que hacemos es indicar la función que debe ser llamada por cada elemento; y después la misma será invocada pasando el valor como primer argumento.
Ejemplo completo para recorrer ArrayList en Java
Veamos ahora los 3 métodos que menciono, así como su salida. El código completo es el siguiente:
/*
Recorrer ArrayList en Java
https://parzibyte.me/blog
*/
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
/*
* Creamos un ArrayList, recordemos que un ArrayList puede ser de cualquier
* tipo; para no complicar las cosas haremos un ArrayList de tipo String
*/
ArrayList<String> canciones = new ArrayList<>();
// Le agregamos datos
canciones.add("Ashes to ashes");
canciones.add("Beds are burning");
canciones.add("It's only rock 'n' Roll (But I like it)");
System.out.println("Recorriendo con método 1");
// Método 1
for (String cancion : canciones) {
System.out.println(cancion);
}
System.out.println("Recorriendo con método 2");
// Método 2
for (int x = 0; x < canciones.size(); x++) {
String cancion = canciones.get(x);
System.out.println(cancion);
}
System.out.println("Recorriendo con método 3");
// Método 3
canciones.forEach((cancion) -> {
System.out.println(cancion);
});
}
}
La salida es la siguiente:
Conclusión
Existen más métodos para estos propósitos pero me parece que con el método 2 funciona perfectamente, ya que tenemos el índice y el valor, además, no nos metemos con funciones propias del lenguaje, y podemos aplicar esto a otros lenguajes ya que solo se necesita la longitud o tamaño de la lista.
Te invito a leer más sobre Java aquí.
Hola, tengo un problema, cree un login con registro de usuario y pues quiero agregar en el login, el metedo de bsucar usuarios, que cuando yo registre un usuario, tenga en otra ventana un boton de buscar usuario, que cuando escriba el nombre de usuario, presione el boton, que me muestre los resultado da los datos de ese usurio en la cajaTexfield, como puedo agregar ese metodo?
Hola. Gracias por sus comentarios. Si tiene alguna consulta, solicitud de creación de un programa o solicitud de cambio de software estoy para servirle en https://parzibyte.me/#contacto
Saludos!