Java,如何获得当前索引/键“for each”循环

在Java中,如何获取Java中元素的当前索引?

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

在PHP中,你可以这样做:

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

你不能,你需要分开保存索引:

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

或使用正常的循环:

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

原因是你可以使用浓缩的语法循环任何Iterable ,并不能保证值实际上有一个“索引”

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

它可能在链表中。

您必须在歌曲类中创buildtoString()。 如果你不这样做,它会打印出歌曲的参考。

现在可能对你无关紧要。 ^ _ ^

在Java中,你不能像foreach一样隐藏迭代器。 您必须执行正常的For循环才能获得当前的迭代。

跟踪你的索引:这是如何在Java中完成的:

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

在Java中不可能。


这是Scala的方式:

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

正如其他人指出的,“不可能直接”。 我猜你想要Song的某种索引键? 只需在元素中创build另一个字段(一个成员variables)。 将歌曲添加到集合时增加它。

来自我正在使用的当前代码的示例:

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

让您从零开始干净地开始,并在您处理时增加。