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

时间:2010-08-07 18:20:57

标签: java

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

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

在PHP中你可以这样做:

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

7 个答案:

答案 0 :(得分:295)

你不能,你需要单独保留索引:

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

或使用普通for循环:

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

原因是您可以使用精简语法循环遍历任何Iterable,并且不能保证这些值实际上具有“索引”

答案 1 :(得分:20)

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

可以在链表中使用。

你必须在歌曲课中制作toString()。 如果你不这样做,它将打印出歌曲的参考。

现在可能和你无关。 ^ _ ^

答案 2 :(得分:12)

在Java中,你不能,因为foreach意味着隐藏迭代器。您必须执行正常的For循环才能获得当前迭代。

答案 3 :(得分:11)

跟踪你的索引:这是用Java完成的:

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

答案 4 :(得分:6)

Java中不可能。


这是Scala方式:

val m = List(5, 4, 2, 89)

for((el, i) <- m.zipWithIndex)
  println(el +" "+ i)

答案 5 :(得分:2)

正如其他人指出的那样,'不可能直接'。 我猜你想要一些宋的索引键? 只需在Element中创建另一个字段(成员变量)。将Song添加到集合时增加它。

答案 6 :(得分:-4)

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

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

让您干净地从索引为零开始,并在处理时递增。