只要the documentation定义了所谓的遭遇顺序,我认为有理由问我们是否可以某种方式反转该遭遇顺序。查看API
流向我们提供的内容,除了sorted()
之外,我没有找到与订购相关的任何内容。
如果我有一个流生成说来自List
,我可以交换该流的两个元素,从而生成另一个stream
并修改了遭遇顺序。
谈论流中的“交换”元素或规范中没有提及任何内容甚至是否有意义。
答案 0 :(得分:2)
Java Stream API没有专门的操作来反转遇到订单或成对交换元素或类似的东西。请注意,Stream源可以一次性关闭(如网络套接字或生成的随机数流),因此一般情况下,如果不将所有内容存储在内存中,则无法向后转。这实际上是排序操作的工作方式:它将整个流内容转储到中间数组中,对其进行排序,然后执行下游计算。实施逆向操作也是如此。
对于像随机访问列表这样的特定来源,您可以使用例如此构造
创建反向流List<T> list = ...;
Stream<T> stream = IntStream.rangeClosed(1, list.size())
.mapToObj(i -> list.get(list.size()-i));