313 votes

Y a-t-il un moyen pour accéder un itération-compteur en Java ' boucle foreach s ?

Y a-t-il un moyen dans la boucle foreach Java

pour savoir combien de fois la boucle a déjà été traitée ?

En dehors de l’utilisation à l’aide de l’ancien et bien connu for(int i=0;i `` boundary;i++)-boucle, soit la structure

la seule façon d’avoir un tel compteur disponible dans une boucle foreach ?

233voto

Michael Borgwardt Points 181658

Oui, vous devrez fournir votre propre compteur.

La raison en est que la boucle foreach en interne n’est pas avoir un compteur ; Il est basé sur l’interface Iterable , c'est-à-dire qu’il utilise un `` pour effectuer une boucle sur la « collection » - qui peut-être pas du tout une collection et peut en fait être quelque chose pas du tout basé sur les index (comme une liste chaînée).

73voto

akuhn Points 12241

Il y a une autre façon.

Étant donné que vous écrivez vos propres classe et une méthode statique qui retourne un sur les instances de cette classe, vous pouvez

Où la mise en oeuvre de `` est quelque chose comme

61voto

paxdiablo Points 341644

Vous devez exécuter votre propre compteur ainsi :

17voto

bruno conde Points 28120

Je crains que ce n’est pas possible avec `` . Mais je peux vous suggérer un simple style ancien pour les boucles:

Notez que l’interface de la liste vous donne accès à `` .

(edit)

À votre exemple de changement :

11voto

Yuval Points 3350

Un des changements Sun envisage de Java7 consiste à fournir l’accès à l’intérieur `` en boucles foreach. la syntaxe sera quelque chose comme cela (si cela est accepté) :

Il s’agit de sucre syntaxique, mais apparemment beaucoup de demandes ont été faites pour cette fonctionnalité. Mais que s’il est approuvé, vous devrez compter les itérations vous-même ou utiliser un habitué pour les boucles avec un `` .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X