La boucle foreach
(ou la boucle for
améliorée) ne dispose pas des fonctions permettant de garder une trace de l'élément qui est en cours d'itération pour le moment. Il n'y a aucun moyen de savoir quel index d'un Collection
est en cours de traitement, ou s'il y a plus d'éléments à traiter dans un . Cela dit, une solution de contournement qui fonctionnerait est de garder une référence à l'objet qui est itéré sur le moment dans la boucle foreach
. En gardant une référence de ce sur quoi on travaillait à l'itération actuelle, on pourrait garder la référence une fois que la boucle foreach
se termine, et ce qui reste dans la variable sera le dernier élément.
Cette solution de contournement fonctionnera uniquement si-et-seulement-si le dernier élément est le seul élément qui est nécessaire.
Par exemple:
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);
Sortie:
c
Il serait utile de savoir * pourquoi * vous remplacez une boucle basée sur l'itérateur par une instruction for-each, d'autant plus que (comme la plupart l'ont souligné) l'approche par itérateur que vous remplacez vous offre la fonctionnalité vous demandez alors que la déclaration for-each ne le fait pas. – delfuego
Je voulais le remplacer pour l'élégance et la brièveté de la boucle pour chaque. Mais comme il ne peut pas couvrir les fonctionnalités existantes, j'abandonne l'idée. – Dan
http://download.oracle.com/javase/1.5.0/docs/guide/language/foreach.html – Bozho