Java对数据的流水线处理——Stream流

1.概述

Stream流是Java 8中提出的一个新特性,它结合了Lambda表达式,提供了一种处理集合和数组的方式。Stream流可以让我们以一种更加简洁、高效的方式来处理数据,从而简化对于集合,数组的操作

如同标题一样,Stream流可以像流水线一样对数据进行过滤,转换,去重,打印等一系列操作

如图:若我要对集合中的数据进行去重

我们可以利用冒泡去除匹配到的重复元素

加上打印语句我们需要10行代码

06629d3c27ba40a99eea34804ce1137e.png

那我们使用Stream流就可以只用1行代码就完成了操作

3a5e3ed2cfcc4d039a85397ab94e5931.png

除了Arrays和Collections,你有兴趣学Stream流吗

9f30a7e345364f758a541c4f695f349b.jpg

2.Stream流的使用步骤

⑴首先要先得到一条Stream流,把数据放上去

bca982042101474fa8442a2ac4e1d622.png

①单列集合 获取Stream流

直接使用单列集合中的静态方法stream

e9fb4855b31c4f35a8b395bd274b378b.png

②双列集合 获取Stream流

先将双列集合转换为单列集合,在利用静态方法stream获取

90984408d4914fe1b95682170ea324bf.png

③数组 获取Stream流

利用数组的工具类Arrays中的静态方法stream

7bd2d9e2f84e44b1aaa8bb43ce9e6d81.png

④零散的数据 获取Stream流

直接利用Stram接口中的静态方法of获取

39c62c34c4954b5987dbcb9bddb0e36c.png

⑵使用Stream流的中间方法对数据进行处理

d6641967ebb24d61a03e841e5dcc1dc0.png

①Stream流的细节

Ⅰ.中间方法返回新的Stream流,原来的Stram流只能使用一次

如图:我创建流1并使用完成,然后想要再次使用流1,运行程序报错

d8230e6250214e3b9bd750d2d240d27f.png

b6134b8bba7f44709b203172fe5ed8a1.png

Ⅱ.修改Stream流中的数据,原来集合或数组中的数据不会发生改变

②filter  过滤数据

如图:首先要获取流,再实现Predicate接口并重写里面的test方法

4d0ca8b404a1443cba17858a1cf0ec16.png

③limit获取前几个元素   skip跳过前几个元素

如图:想要获取或跳过元素,就在方法中填写元素个数即可

6426f28ebbb14c8a803b26cad1c90977.png

④distinct  去重元素

1a18d538947d4d7b82dd4acb6f5a8e6b.png 

注:底层依赖hashCode和equals方法,因此若要去除自定义对象时,要在JavaBean类中重写方法

⑤concat 合并两个流

利用Stream中的静态方法concat,方法返回值类型为Stram

be914b598991435d9a11e1473ff82542.png

⑥map  转换流中的数据

如图:获取流,再继承Function并重写apply方法

13adde4a65aa4fc294ca0b85bf153713.png

⑦sorted  排序流中的数据

若流中的是基本数据类型,则要转换为对应的包装类,方法的细节与sort一样

0bdede06b84844aab232e4334f11b984.png

⑶使用Stream流的终结方法对数据进行处理

终结方法运行完毕就会关流,下面就不能再次使用该流

3f2cd38e92fc4acb8958ab6e7142896c.png

①forEach遍历元素

如图:获取流,调用forEach实现Consumer 接口并重写accept方法426284f6d22e48bd94bd3b0cb31627fe.png

②toArray 收集数据到数组中

如图:在toArray中填写要转换的数组类型,实现IntFunction接口并重写apply方法

81700ae3581b4c80a26c82b4ae5a946c.png

③collect 收集数据到集合

Ⅰ.收集数据到单列集合List

我们可以在collect中传递参数Collections.toList

注: List集合中可以存在重复数据

f3c77211c468401db5fb905e61380c73.png

Ⅱ.收集数据到Set集合

我们可以在collect中传递参数Collections.toSet

注: Set集合中不能存在重复数据,若有重复数据,会自动去重

ee6b2e963b564b4d8a59118d330aeb80.png

Ⅲ.收集数据到Map集合

我们同样在collect中传递参数Collections. toMap(K, V),其中我们要在toMap分别填写键的规则和值的规则

注:转换位Map集合时的键不能有重复,否则程序会报错!!!

2a82575b74de4133b563ecd85152c366.png

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤姆大聪明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值