Toda colección es una estructura de datos por lo que para recorrerlo tendremos que utilizar un bucle, con el cual podremos ir extrayendo los datos según la iteración en la que nos encontremos.
Veamos varios ejemplos de como recorrer una lista del tipo ArrayList aunque podriamos utilizar este procedimiento para cualquier otro tipo de colección.
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.
|
1 2 3 4 5 |
ArrayList<String> movies = new ArrayList<>(); // Le agregamos datos canciones.add("Juego de tronos"); canciones.add("Star Trek"); canciones.add("Star Wars)"); |
Método 1
El primer método usa lo que yo llamo un for sin índice o un for each:
|
1 2 3 4 5 |
System.out.println("Recorriendo con método 1"); // Método 1 for (String titulo : movies) { System.out.println(titulo); } |
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.
|
1 2 3 4 5 |
// Método 2 for (int x = 0; x < movies.size(); x++) { String titulo = movies.get(x); System.out.println(titulo); } |
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.
|
1 2 3 4 |
/ Método 3 canciones.forEach((titulo) -> { System.out.println(titulo); }); |
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.
Como ya comentamos, independientemente de la colección podemos utilizar el mismo método.
Ejemplo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Set coleccionSet = new HashSet(); coleccionSet.add("uno"); coleccionSet.add("segundo"); coleccionSet.add(3); coleccionSet.add(new Integer(4)); coleccionSet.add(new Float(3.15)); coleccionSet.add("segundo"); // los repetidos no se a??aden System.out.println(coleccionSet); for(Object elemento : coleccionSet){ //if(elemento instanceof String) //String texto = (String) elemento; System.out.println(elemento); } |