Iterar en Java
Crea un ArrayList<String> llamado tags, añade oak luego pine, y recorre la lista con for (String t : tags) imprimiendo cada palabra. Compila Lane.java y ejecuta java Lane. La pantalla debe mostrar dos líneas: oak, luego pine. Cada paso del bucle imprime un valor. Recorrer cada valor de la colección es lo que enseña esta página.
Recorre cada valor una vez
En la página HashSet comprobabas size y contains sin bucle. En la página for-each anterior del curso recorrías un array fijo. Esta página recorre un ArrayList del mismo modo for-each y luego muestra un recorrido indexado con get. La colección crece primero con add. El bucle llega después de guardar los valores.
Abre Lane.java. Mantén el nombre de la clase pública Lane para que coincida con el archivo. Borra demos restantes de HashSet, contains, Bin, Desk y put/get de mapa. Borra también cualquier Scanner o nextLine. El programa no debe esperar a que escribas.
Cerca de arriba, encima de public class Lane, escribe:
import java.util.ArrayList;
Dentro de main, crea la lista y añade dos palabras:
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
Luego escribe el encabezado y el cuerpo del for-each:
for (String t : tags) { System.out.println(t); }
Los dos puntos van entre el tipo-y-nombre del elemento y la colección. Cada paso pone t en la siguiente palabra. No escribas un contador en esta primera demo. Guarda antes de compilar.
import java.util.ArrayList;
public class Lane {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
for (String t : tags) {
System.out.println(t);
}
}
}
Desde la carpeta que guarda Lane.java, ejecuta javac Lane.java. Cuando paréntesis, llaves, ángulos, dos puntos y punto y coma coinciden, javac no escribe línea propia. Luego ejecuta java Lane — no java Lane.java ni java ArrayList. Quita la terminación .java del comando de ejecución.
El programa debe imprimir dos líneas y parar: oak, luego pine. No debe pedirte que escribas. Si la terminal espera entrada de teclado, aún queda una llamada nextLine de un ejercicio anterior en un archivo. Borra esa llamada y conserva la creación, las dos líneas add y el for-each.
Recorre la ejecución una vez. Java empieza en Lane.main. La lista guarda oak luego pine. El primer paso pone t en oak e imprime oak. El segundo pone t en pine e imprime pine. Luego el bucle termina. Nada más debe imprimirse. Si solo ves 2, imprimiste size() en lugar de recorrer los valores. Si ves una sola línea [oak, pine], imprimiste el objeto lista entero en lugar de cada elemento — mantén el cuerpo del for-each como println(t). Si ves true o leaf, aún corre una demo Bin o Desk — pasa a java Lane.
Si javac dice que no encuentra ArrayList, falta el import o está después de la línea de la clase. Mueve import java.util.ArrayList; encima de public class Lane. Si escribes for (String t : tags) sin llaves y luego más de una línea de cuerpo, en esta página mantén el cuerpo como un println dentro de llaves para que la forma quede clara. La ortografía del nombre de la colección tras los dos puntos debe coincidir con la lista que creaste: tags, no un slots sobrante de la página for-each de arrays.
Recorrido indexado con get
Una segunda demo recorre la misma lista con un for contado y get. Ves el camino del número de ranura junto al camino for-each.
import java.util.ArrayList;
public class Lane {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
for (int i = 0; i < tags.size(); i++) {
System.out.println(tags.get(i));
}
}
}
Compila y ejecuta igual. La pantalla otra vez muestra oak, luego pine. El encabezado usa i desde 0 mientras i < tags.size(). Cada llamada del cuerpo tags.get(i) lee una ranura. Ese es el hábito get de list-methods dentro de un bucle. Prefiere el archivo for-each como primer camino de enseñanza cuando no necesitas el número de índice en pantalla. Conserva el archivo indexado para demostrar que ambos recorridos imprimen las mismas dos líneas para esta lista. Si empiezas i en 1 por error, la primera palabra impresa sería pine y oak se saltaría — mantén i en 0 para el recorrido completo.
No confíes en el orden de impresión de HashSet para la pantalla del quiz de esta página. Los sets no prometen oak antes de pine. Las demos ArrayList mantienen un orden estable para las dos líneas que esperas. Quédate con ArrayList en los archivos de enseñanza para que la pantalla del quiz sea predecible.
El tamaño solo no es un recorrido
Un tercer archivo muestra el hábito restante de imprimir solo el conteo. Fue útil en la página HashSet, pero no es iterar.
import java.util.ArrayList;
public class Lane {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
System.out.println(tags.size());
}
}
Ese archivo imprime 2 — un número, no las palabras. Úsalo solo como contraste. Los archivos conservados de la lección de iterar imprimen cada valor con for-each o con get indexado. No envíes el archivo solo-size como camino del quiz para la pantalla de dos líneas.
Comparado con for-each en arrays y con comprobaciones HashSet
Antes, for-each recorría ranuras int[] o String[]. Aquí los dos puntos siguen funcionando, pero el nombre a la derecha es un ArrayList. En la página HashSet, size y contains respondían sin imprimir cada valor. Esta página imprime cada valor. Una demo restante de contains de Bin es otra lección. Para esta página mantén Lane con el for-each que imprime oak luego pine.
Cuando aún haya archivos viejos Bin.java cerca, déjalos o bórralos solo si confunden qué clase ejecutas. Ejecuta java Lane después de compilar el archivo de recorrido de esta lección.
Lo que queda para wrappers
Esta página recorre valores de la colección. La página siguiente cubre tipos wrapper como Integer junto al int primitivo cuando las colecciones necesitan objetos. Quédate aquí con for-each y get indexado en ArrayList. No inventes demos wrapper como requisito en esta página.
Antes de wrappers
Puedes importar java.util.ArrayList, añadir oak y pine, e imprimir cada palabra con for (String t : tags). También puedes recorrer con for (int i = 0; i < tags.size(); i++) y tags.get(i). Compila Lane.java y ejecuta java Lane. La pantalla muestra oak luego pine. La página siguiente son wrappers, donde los tipos objeto se colocan junto a los primitivos para el almacenamiento en colecciones.
Mantén el import. Mantén los dos add antes del bucle. Mantén for-each como el primer recorrido de enseñanza. Esos hábitos son el control antes de seguir. Cuando las dos líneas imprimen tras el for-each, iterar cumplió su trabajo en esta lección y estás listo para el siguiente tema.
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior