JDK8新特性流式操作(我只想快速入门)

前言
最近进的公司,刚接触到JDK8流这个优雅的东西我也有点不知所措,确实跟我们以前码的代码区别很大,时代在进步,我们得学习!!!

废话不多说,直接贴代码

//将List转化为流进行过滤(把空的剔除),再通过collect里的Collectors用Student的性别进行分组

list.stream().filter(Objects::nonNull).collect(Collectors.groupingBy(Student::getSex));

//这里是把list转化为流,把空的剔除,同时拿到名字等于张三的进行遍历,s就是我们给每个进来的对象取得别名


list.stream().filter(Objects::nonNull).filter(s->"张三".equals(s.getName)).forEach(s->{   });

//除了过滤这个中间操作,其实还有:

distinct         //去重
limit             //limit返回包含前n个元素的流,当集合大小小于n时,则返回实际长度
skip             //与limit操作相反,如同其字面意思一样,是跳过前n个元素

接下来将个比较好用的 Map

//将list里的所有学生的名字转化为List

list.stream().filter(Objects::nonNull)
                            .map(Student::getName).collect(Collectors.toList());

//假如这个时候学生表的1某个属性是个List,比如引入了一个List < Hobby >,我们这个时候就像拿到Student里的属性List < Hobby > 的属性,这样操作 (flatMap)

list.stream()
    .filter(Objects::nonNull)          //将null过滤
       .map(Student::getHobbyList)        //拿到Student里的List属性对象
         .flatMap(h -> h.stream())            //将拿到的list变为流
           .collect(Collectors.toList());       //最终操作转化为List,也就是Student 里的List<Hobby>

还有一些终端操作

1. 查找 -------> allMatch

//只有所有的学生都18岁以上才为true
boolean isAdult = list.stream().allMatch(student -> student.getAge() >= 18);

2.findFirst ------->用于返回满足条件的第一个元素

//找到王**排名的第一个
list.stream().filter(student -> "王**".equals(student.getName)).findFirst();

3.findAny ------->findAny相对于findFirst的区别在于,findAny不一定返回第一个,而是返回任意一个

//找到王**的同学任意一个,可能有同名同姓对吧
list.stream().filter(student -> "王**".equals(student.getName)).findFirst();

由于上班了,我就先撤了,希望这些对大家有所帮助!!!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

遇见更优秀的自己

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

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

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

打赏作者

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

抵扣说明:

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

余额充值