在Java 8中,当我这样做时,
类型1
list.stream().parallel().map(/**/).unordered().filter(/**/).collect(/**/);
2型
list.stream().parallel().unordered().map(/**/).filter(/**/).collect(/**/);
由于两个流是并行的,因此我可以理解每个操作(如过滤器,映射等)的所有对象将并行执行,但操作本身将按定义的顺序依次执行。
问题
1,在Type1中,我确实在map()操作之后说了unordered()。那么,map()操作是否尝试处理“排序”,因为它在unOrdered()之前?
2.在Type2中,未在整个地图上维护订购,过滤器操作对吗?我的理解正确吗?
最佳答案
有3种Stream
状态修改方法:sequential()
返回顺序的等效流。可能会返回自身,这是因为流已经是顺序的,或者是因为基础流状态已被修改为顺序的。parallel()
返回并行的等效流。可能由于流已经是并行的,或者因为基础流的状态已被修改为并行而返回自身。unordered()
返回等于unordered的等效流。可能会返回自身,可能是因为流已经无序,或者是因为基础流状态已被修改为无序。
如您所见,这三个都可以修改基础流状态,这意味着方法在流链中的位置无关紧要。
您的两个示例是相同的。所以这些是:
list.stream().parallel().map(/**/).filter(/**/).unordered().collect(/**/);
list.stream().map(/**/).filter(/**/).unordered().parallel().collect(/**/);
list.stream().unordered().map(/**/).parallel().filter(/**/).collect(/**/);
list.stream().unordered().parallel().map(/**/).filter(/**/).collect(/**/);
您应该单击unordered链接并阅读javadoc,以了解有关流排序的更多信息。
关于java - Java Unordered()函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56516407/