Java反向foreach

Ble*_*eek 6 java

可能重复:
可以以相反的顺序为java中的每个循环执行一次吗?

对于前向迭代:

for (int i=0; i<pathElements.length; i++){
    T pathElem = pathElements[i];
    .......
}
Run Code Online (Sandbox Code Playgroud)

我可以将它编码为foreach:

for(T pathElem : pathElements){
    .......
}
Run Code Online (Sandbox Code Playgroud)

是否有一个开关,以便foreach可以反向迭代?

for (int i=pathElements.length-1; i>=0; i--){
    T pathElem = pathElements[i];
    .......
}
Run Code Online (Sandbox Code Playgroud)

foreach中是否存在反向迭代开关?

(如果没有,你不认为JDK 8,9等包含这个功能会是一个令人兴奋的想法吗?)

Mic*_*rdt 11

这根本不可能,因为foreach循环基于IterableIterator接口,而那些没有反向迭代的概念.

  • 我看到 [this](http://stackoverflow.com/questions/1098117/can-one-do-a-for-each-loop-in-java-in-reverse-order) 链接并认为我们可以做到 (2认同)

Lou*_*man 9

使用番石榴:

for (T elem : Lists.reverse(Arrays.asList(array))) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

迭代数组的反转视图作为列表.(所以只有一个不变的开销,你不会改变底层数组.)


mre*_*mre 5

(如果没有,你不认为JDK 8,9等包含这个功能会是一个令人兴奋的想法吗?)

我不确定在这样的功能中看到了什么.

现在,您可以简单地使用Collections.reverse已转换为列表的数组的副本,并使用Arrays.asList它进行迭代.