Java 8 如果对输入列表进行排序,流返回的列表是否总是进行排序?

Java 8 如果对输入列表进行排序,流返回的列表是否总是进行排序?,java-8,java-stream,Java 8,Java Stream,假设您有一个排序的列表输入。我想知道下面的列表输出是否总是被排序 List<String> output = input.stream .filter(<predicate>) .collect(Collectors.toList()); List output=input.stream .filter() .collect(Collectors.toList()

假设您有一个排序的
列表输入
。我想知道下面的
列表输出是否总是被排序

List<String> output = input.stream
                           .filter(<predicate>)
                           .collect(Collectors.toList());
List output=input.stream
.filter()
.collect(Collectors.toList());

流中元素的顺序在返回列表中保持,如下所述:

将所有输入元素收集到列表中的收集器,in 遭遇命令


流中元素的顺序在返回的列表中保持,如下所述:

将所有输入元素收集到列表中的收集器,in 遭遇命令


如果从有序集合(如列表、数组)或某些生成器(如stream.iterate、ranges等)创建流,则流将保持该顺序,并且流的结果将按原始元素的顺序累积


在这种情况下,是的,顺序被保留

如果从有序集合(如列表、数组)或某些生成器(如stream.iterate、ranges等)创建流,则流将保持该顺序,并且流的结果将按原始元素的顺序累积


在这种情况下,是的,顺序被保留

除非通过一些中间操作破坏了顺序,obviously@Eugene我希望任何显式调用unordered()的人都知道这意味着什么以及它的作用,但yes同意!即使无序也不是小事,因为它只意味着通过which获取which元素,在本例中,
…unordered().findFirst()
从流源返回真实的第一个元素非常好。除非通过一些中间操作打破该顺序,obviously@Eugene我希望任何人明确地调用unordered()我想知道这意味着什么以及它的作用,但我同意!即使无序也不是小事,因为它只意味着通过which获取which元素,对于本例,
…unordered()。findFirst()
从流源返回真实的第一个元素非常好。在您的确切示例中,顺序将被保留,但通常需要检查每个中间操作。对于并行流来说,事情要有趣得多——当中间操作没有顺序时,而终端一在您的确切示例中没有顺序时,顺序将被保留,但通常您需要检查每个中间操作。对于并行流来说,事情要有趣得多——中间操作没有顺序,而终端操作有顺序