El bucle foreach
(o el bucle mejorado for
) no tiene las funciones para realizar un seguimiento de qué elemento se está iterando en este momento. No hay forma de averiguar qué índice de Collection
se está trabajando o si hay más elementos para procesar en un Iterable
.
Dicho esto, una solución que funcionaría es mantener una referencia al objeto que se está iterando en este momento en el bucle foreach
.
Al mantener una referencia de lo que se está trabajando en la iteración actual, uno podría mantener la referencia una vez que finalice el ciclo foreach
, y lo que quede en la variable será el último elemento.
Esta solución alternativa solo funcionará si-y-solo-si el último elemento es el único elemento que se necesita.
Por ejemplo:
String lastString = null;
for (String s : new String[] {"a", "b", "c"}) {
// Do something.
// Keep the reference to the current object being iterated on.
lastString = s;
}
System.out.println(lastString);
de salida:
c
Sería útil saber * por qué * está reemplazando un bucle basado en iterador con un enunciado for-each, especialmente desde (como la mayoría lo ha señalado) el enfoque basado en iteradores que está reemplazando le ofrece la funcionalidad lo está solicitando mientras que el enunciado for-each no. – delfuego
Quería reemplazarlo por la elegancia y brevedad del bucle for-each. Pero como no puede cubrir la funcionalidad existente, estoy renunciando a la idea. – Dan
http://download.oracle.com/javase/1.5.0/docs/guide/language/foreach.html – Bozho