Java, Comment puis-je obtenir l’index / la clé courante dans la boucle «for each»

En Java, comment obtenir l’index actuel de l’élément en Java?

for (Element song: question){ song.currentIndex(); //<<want the current index. } 

En PHP, vous pouvez faire ceci:

 foreach ($arr as $index => $value) { echo "Key: $index; Value: $value"; } 

Vous ne pouvez pas, vous devez soit conserver l’index séparément:

 int index = 0; for(Element song : question) { System.out.println("Current index is: " + (index++)); } 

ou utilisez une boucle normale pour:

 for(int i = 0; i < question.length; i++) { System.out.println("Current index is: " + i); } 

La raison en est que vous pouvez utiliser la syntaxe condensée pour effectuer une boucle sur une Iterable , et il n'est pas garanti que les valeurs aient réellement un "index"

 for (Song s: songList){ System.out.println(s + "," + songList.indexOf(s); } 

c’est possible dans la liste chaînée.

vous devez faire toSsortingng () dans la classe de chansons. si vous ne le faites pas, il imprimera la référence de la chanson.

probablement pas pertinent pour vous maintenant. ^ _ ^

En Java, vous ne pouvez pas, car foreach était censé cacher l’iterator. Vous devez faire la boucle normale pour obtenir l’itération en cours.

Gardez une trace de votre index: C’est comme ça en Java:

  int index = 0; for (Element song: question){ // Do whatever index++; } 

Pas possible en Java.


Voici la manière Scala:

 val m = List(5, 4, 2, 89) for((el, i) <- m.zipWithIndex) println(el +" "+ i) 

Comme d’autres l’ont souligné, «pas possible directement». Je suppose que vous voulez une sorte de clé d’index pour Song? Créez simplement un autre champ (une variable membre) dans Element. Incrémentez-le lorsque vous ajoutez un morceau à la collection.

Exemple de code courant avec lequel je travaille:

 int index=-1; for (Policy rule : rules) { index++; // do stuff here } 

Vous permet de démarrer proprement avec un index de zéro et d’incrémenter au fur et à mesure que vous traitez.