在Java中,如何获取Java中元素的当前索引?Java,我如何获得当前的索引/键在“for each”循环中
for (Element song: question){
song.currentIndex(); //<<want the current index.
}
在PHP中,你可以这样做:
foreach ($arr as $index => $value) {
echo "Key: $index; Value: $value";
}
在Java中,如何获取Java中元素的当前索引?Java,我如何获得当前的索引/键在“for each”循环中
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,并且不能保证这些值实际上有一个“索引”
这在语义上的确是正确的答案,因为每个循环都可以迭代来自远程数据库的流数据,在迭代其内容的同时正在更新远程数据库(如果使用的迭代器实际上是这样做的),在这种情况下无法知道目前的指数。索引只是对数据的*查看*,而不是数据的属性。 – Esko 2010-08-07 18:26:32
虽然它可能不是索引,但在循环内部可以访问某种迭代计数器会非常方便。我猜这样的事情很难在核心Java中结束,对于某些脚本语言来说更多的机会。 – akostadinov 2013-04-01 11:11:05
正如我担心的那样,也许在Java 12中,他们会将它添加为一个值得引以为傲的功能,就像他们最近使用lambdas并使用单行程序读取文件一样? (免责声明:我(大部分)是我自己的Java程序员) – atas 2014-12-18 12:37:39
在Java中,你不能,因为的foreach是为了隐藏迭代器。您必须执行正常的For循环才能获得当前迭代。
跟踪您的索引:这就是它在Java中的工作方式:
int index = 0;
for (Element song: question){
// Do whatever
index++;
}
的确如此,但尽管我喜欢在Java5中引入的增强型for-each循环,但是不会提供您自己的索引而仅仅使用传统for-each构造的目的?使用Java内置的内容通常对Java开发人员来说更直观/可读(尽管并非总是)。 – 2017-06-11 19:39:55
7年后...(哇,我不能相信它,时光飞逝),我同意你@MichaelM 100%。 – 2017-06-12 18:16:36
在Java中不可能。
这里是Scala的方式:
val m = List(5, 4, 2, 89)
for((el, i) <- m.zipWithIndex)
println(el +" "+ i)
整洁!另见https://stackoverflow.com/questions/7167253/is-there-a-java-equivalent-of-pythons-enumerate-function – 2015-02-25 12:48:40
正如其他人所指出的, '不能直接'。 我猜你想要宋某种索引键? 只需在元素中创建另一个字段(一个成员变量)。将歌曲添加到集合时增加它。
for (Song s: songList){
System.out.println(s + "," + songList.indexOf(s);
}
它可能在链接列表中。
你必须在song类中做toString()。 如果你不打印它会打印出歌曲的参考。
现在可能无关紧要。^_ ^从当前的代码
真棒!好主意 – 2014-08-03 00:10:08
丑陋的黑客...... – Pacerier 2014-08-08 00:15:01
正如人们评论http://stackoverflow.com/a/5200217,如果有重复的元素,并且是O(n²)慢,这是错误的。 – 2015-02-25 12:45:39
实例我的工作:
int index=-1;
for (Policy rule : rules)
{
index++;
// do stuff here
}
让您用干净的零指标,增量开始为您处理。
简单繁琐。从零开始并在最后执行。除非你在循环体中继续使用。 – gabor 2017-06-12 11:32:16
这会被问到一个月一次 – 2010-08-07 20:58:47
在PHP中,您使用的不是同义Java数组的关联数组。 – squiguy 2013-01-03 01:36:34