Stream的分类,执行流程和各种创建方式

本文章为系列文章,上一篇《​​Stream案例体验​​》通过丰富的案例感受了Stream的便利,本篇主要讲解:,这里通过一个运费案例,通过 【代码实现】 +【 图解】解释清楚Stream计算数据时的流程!,需求:获取运单价格大于 5000元 的运单编号,分析:,代码实现:,运单类可直接复用 《​​Stream案例体验​​》一篇,运行流程:,Stream的分类,执行流程和各种创建方式,上节我们说,Stream的操作分为两大类,【中间操作】和【结束操作】,这里详细介绍一下,Stream的分类,执行流程和各种创建方式,无状态:元素的处理不受之前元素影响,比如:过滤,映射,转换类型,有状态:该元素只有拿到所有元素之后才能继续下去,比如排序,去重,非短路操作:必须处理完所有元素才能得到结果,比如:求最值,遍历,短路操作:遇到某些符合条件的元素就可以得到最终结果,比如:获取第一个出现的数据,流可以用来处理数组、集合、IO资源等数据,而且分为【串行流】和【并行流】两种,它的创建方式主要分为以下几种:,使用Collection下的stream() 方法【串行流】和parallelStream() 方法【并行流】,使用Arrays中的stream() 方法,将数组转换为流,使用Stream中的静态方法:of()、iterate()、generate(),对于iterate和generate这种没有数据长度的流称为【无限流】,需要使用limit()来指定流长度,比如generate是生成数据,生成多少数据?需要使用limit指定,使用 BufferedReader.lines() 方法,将每行内容转成流,使用 Pattern.splitAsStream() 方法,将字符串分隔成流,stream()方法创建的是【串行流】也可以叫【顺序流】,由主线程按顺序对流执行操作,而 parallelStream()方法创建的是【并行流】,内部以多线程并行执行的方式对流进行操作,但前提是流中的数据处理没有顺序要求。例如筛选集合中的奇数,两者的处理不同之处:,Stream的分类,执行流程和各种创建方式,如果流中的数据量足够大,并行流可以加快处速度。,除了直接创建并行流,还可以通过 parallel()把顺序流转换成并行流:,

文章版权声明

 1 原创文章作者:cmcc,如若转载,请注明出处: https://www.52hwl.com/17096.html

 2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈

 3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)

 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年3月5日 上午12:00
下一篇 2023年3月7日 下午10:34