Man*_*Kbk 2 java java-8 java-stream
在java 8中,当我这样做时,
list.stream().parallel().map(/**/).unordered().filter(/**/).collect(/**/);
Run Code Online (Sandbox Code Playgroud)
list.stream().parallel().unordered().map(/**/).filter(/**/).collect(/**/);
Run Code Online (Sandbox Code Playgroud)
由于两个流都是并行的,我可以理解每个操作(如过滤器、映射等)的所有对象将并行执行,但操作本身将按照定义的顺序顺序执行。
1.在Type1中,我确实在map()操作之后说unordered()。那么,map() 操作是否尝试处理“排序”,因为它位于 unOrdered() 之前?
2.在Type2中,排序不是跨地图维护的,过滤器操作对吗?我的理解正确吗?
Stream状态修改方法有3种:
返回一个等效的连续流。可能会返回自身,因为流已经是顺序的,或者因为基础流状态已修改为顺序的。
返回一个等效的并行流。可能会返回自身,因为流已经是并行的,或者因为底层流状态已修改为并行。
返回一个等效的无序流。可能会返回自身,因为流已经是无序的,或者因为基础流状态被修改为无序。
正如您所看到的,这三个方法都可能会修改底层流状态,这意味着方法在流链中的位置并不重要。
你的两个例子是一样的。那么这些将是:
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(/**/);
Run Code Online (Sandbox Code Playgroud)
您应该单击无序链接并阅读 javadoc 以了解有关流排序的更多信息。
| 归档时间: |
|
| 查看次数: |
463 次 |
| 最近记录: |