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

Java, How do I get current index/key in “for each” loop

本问题已经有最佳答案,请猛点这里访问。

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

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

在PHP中你可以做到这一点:

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


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

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

或者使用普通for循环:

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

原因是您可以使用condensed for语法来循环任何iterable,并且不能保证值实际上有一个"index"


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

在链表中是可能的。

您必须在Song类中生成toString()。如果你不这样做,它会打印出这首歌的参考资料。

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


在爪哇,你不能,正如前文的目的是隐藏迭代器。为了获得当前迭代,必须对循环进行正常操作。


跟踪你的索引:Java就是这样做的:

1
2
3
4
5
 int index = 0;
    for (Element song: question){
        // Do whatever
         index++;
    }


在Java中是不可能的。

这是斯卡拉的方法:

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

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


正如其他人指出的,"不可能直接实现"。我猜你想要某种歌曲索引键?只需在元素中创建另一个字段(成员变量)。将歌曲添加到收藏集时将其递增。


我使用的当前代码示例:

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

允许您从零索引开始,并在处理过程中递增。