栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

流操作应用于列表元素的顺序是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

流操作应用于列表元素的顺序是什么?

您想知道的一切都可以在

java.util.stream
JavaDoc中找到。

订购方式

流可能具有也可能没有定义的遇到顺序。
流是否具有遇到顺序取决于源和中间操作。某些流源(例如List或数组)是固有排序的,而其他流源(例如HashSet)则不是。某些中间操作(例如sorted())可能会向其他未排序的流强加一个遇到顺序,而其他一些操作可能会使已排序的流变得无序,例如baseStream.unordered()。此外,某些终端操作可能会忽略遇到顺序,例如forEach()。

如果对流进行了排序,则大多数操作将被约束为按其遇到顺序对元素进行操作; 如果流的源是包含[1、2、3]的列表,则执行map(x-> x *2)的结果必须为[2、4、6]。但是,如果源没有定义的遇到顺序,则值[2、4、6]的任何排列都是有效的结果。

对于顺序流,是否存在相遇顺序不会影响性能,只会影响确定性。如果订购了一个流,则在相同的源上重复执行相同的流管道将产生相同的结果;如果未订购,重复执行可能会产生不同的结果。

对于并行流,放宽排序约束有时可以使执行效率更高。如果元素的顺序无关紧要,则可以更有效地实现某些聚合操作,例如过滤重复项(distinct())或分组的约简(Collectors.groupingBy())。类似地,本质上与遇到顺序相关的操作(例如limit())可能需要缓冲以确保正确的顺序,从而削弱了并行性的优势。如果流具有遇到顺序,但用户并不特别关心该遇到顺序,则使用unordered()对流进行明确排序可以提高某些状态操作或终端操作的并行性能。但是,大多数流管道,例如上面的“块权重之和”示例,



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438605.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号