Vayamos directo a ilustrar un ejemplo con esta funcionalidad :
public class Numeros { public static void main(String[] args) { int[] factorial = new int[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }; // Nueva sintaxis ciclo for en Java 5 for (int digito : factorial) { System.out.println(digito); } } } |
Nótese la manera en que esta estructurada la iteración sobre el arreglo de números enteros (int
's) :
for ( [Tipo de referencia] [Nombre de referencia dentro del ciclo] : [ Arreglo o colección para iterar] ) { } |
Este caso de inspeccionar o procesar todos los elementos dentro de un arreglo o colección del "Collections Framework" es clásico en programas Java. Mediante esta sintaxis se evita la definición de un contador y condicionales para terminar ciclos, simplemente basta declarar el arreglo o colección en sí y una variable, para que cada iteración sea asignado un elemento del grupo a dicha variable para ser procesada.Veamos otro uso de este ciclo for
en una lista :
import java.util.*; public class Idiomas { public static void main(String args[]) { // Definir un ArrayList List<String> lenguajes = new ArrayList<String>(); lenguajes.add("ingles"); lenguajes.add("castellano"); lenguajes.add("aleman"); // Nueva sintaxis ciclo for en Java 5 for( String tipo : lenguajes ) { System.out.println(tipo); } } } |
De la misma manera en que es utilizado este ciclo en arreglos es aplicado a clases del "Collections Framework", al inspeccionar los elementos dentro de la colección lenguajes
, es definida la colección en sí y una variable donde se coloca un elemento del grupo en cada iteración para ser procesado. Nótese la ausencia de la clase Iterator
y sus métodos hasNext()
y next()
comunmente empleados en este tipo de ciclos.
Aunque esta sintaxis de ciclo for
resulta igualmente válida y concisa para procesar elementos en un arreglo o colección, posee las siguientes limitaciones :
Incapacidad de acceso al contador : En determinadas situaciones resulta conveniente accesar el contador del ciclo, ya sea para fines de aplicar condicionales o salir de él prematuramente, al utilizar el ciclo for
con la nueva sintaxis de Java 5, no se tiene acceso a esta información.
Eliminar o agregar elementos : Otra limitante del ciclo for
en Java 5 es la inhabilidad de agregar o eliminar objetos dentro de un arreglo o colección de manera selectiva durante el proceso de iteración.
Si requiere emplear alguna de estas funcionalidades en su programa, simplemente tendrá que depender de la sintaxis común y antiguamente conocida en versiones previas a Java 5.