java 图片反相_Java反向foreach

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

Possible Duplicate:

Can one do a for each loop in java in reverse order?

对于前向迭代:

for (int i=0; i

T pathElem = pathElements[i];

.......

}

我可以将其编码为foreach:

for(T pathElem : pathElements){

.......

}

是否有开关可以使foreach反向迭代?

for (int i=pathElements.length-1; i>=0; i--){

T pathElem = pathElements[i];

.......

}

foreach中是否有反向迭代开关?

(如果没有,你不觉得这将是一个令人兴奋的想法,JDK8,9,等等,包括这个功能吗?)

stackoverflow.com/questions/1098117/

从根本上讲这是不可能的,因为foreach循环是基于Iterable和Iterator接口的,而这些接口没有反向迭代的概念。

无限序列就是一个很好的例子。 由于不存在"最后一个"元素,因此从数学上讲不可能颠倒顺序。

我看到了此链接,并认为我们可以做到这一点

@saman:您可以对已排序的事物(例如TreeSet)或具有索引概念(例如List或数组)进行操作,并且可以肯定,这些是我们通常使用for循环的大多数事情 开启,但对于常规Iterable仍然不可能。

使用番石榴:

for (T elem : Lists.reverse(Arrays.asList(array))) {

...

}

将数组的反向视图作为列表进行迭代。 (因此,只有固定的开销,并且您无需更改基础数组。)

(If not, don't you think it would be an exciting idea that JDK 8, 9,

etc, includes this feature?)

不确定我是否在这种功能中看到了值。

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

好吧,那里有价值。 而不是所有这些多余的行和可能的处理,您可以(理想情况下)将一个单词添加到foreach行中。

或至少内置到JDK的ReverseIterator,这样您就不必每次都自己滚动或使用第三者了。

不,那里没有。您将获得的最接近的结果是首先反转阵列。

ArrayUtils.reverse(array);

for (Item x : array){}

如果pathElements是您的自定义类,则可以通过实现Iterable定义如何对其进行迭代,否则,您可以简单地封装pathElements并覆盖Iterable实现方法。

您还可以进行如下操作并覆盖Iterable接口方法:

public class pathElementsReversed extends pathElements {}

您可以像这样使用每个:

foreach (pathElement p : (pathElementsReversed) pathElements) {...}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值