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