博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 8 stream API<一>
阅读量:7091 次
发布时间:2019-06-28

本文共 1659 字,大约阅读时间需要 5 分钟。

.流不是对所有的元素都进行第一次操作接着进行第二次操作,而是对于一个元素执行完所有操作,所有操作都具有短路运算 跟java && || 运算符一致

伪代码: 

list.stream().mapToInt(item -> {int lengt = item.length();System.out.println(item);

return length;}).filter(length -> length == 5).findFirst().isPresent(System.out : println)

二.flatMap 将多个stream的多个元素里合并成一个stream   

伪代码:

list.stream().map(item -> item.spilt(" ")).flatMap(Arrays::stream).distinct().collect(Collectors.toList())复制代码

伪代码:

List
reuslt = list.stream().flatMap.flatMap(item->list2.stream().map(item2->item+""+item2)).collect(collectors.toList());复制代码

三.分组和分区

申明一个student类,stream可以使用Collectors.groupingBy(Student::getName))来根据学生姓名分组,类似与sql语句的group by

分组:

Map<String,List<Student>> map = students.stream().collect(Collectors.groupingBy(Student::getName));

Map<Integer,List<Student>>map = students.stream().collect(Collectors.groupingBy(Student::getScore));Map<String,Long>map = student.stream().collect(Collectors.groupingBy(Student::getName,Collectors.counting());

Map<String,Double>map = students.stream().collect(Collectors.groupingBy(Student::getName,Collectors.averagingDouble(Student::getScore)));

多级分组:

Map<Integer,Map<String,List<Student>>> map = students.Stream().collect(groupingBy(Student::getScore,groupinBy(Student::getName)))

分区:

Map<Boolean,List<Student>> map = students.stream().collect(Collectors.partitioningBy(student->student.getScore()>=90));

多级分区:

Map
>> map = students.stream().collect(partitioningBy(student -> student.getScore()>80,partitionBy(student -> student.getScore()>90)));复制代码

jdk 实现的方式越具体越好,比如由student创建的集合的长度计算可以直接用 .size()方法得出,但是jdk提供了许多实现的方法,其中方法越具体其扩展性越高,比如我可以得到student创建的集合里去重人名的集合长度

转载地址:http://iqbql.baihongyu.com/

你可能感兴趣的文章
react native windows开发环境搭建(一)
查看>>
nodejs 路径
查看>>
自动化运维工具之ansible
查看>>
TortoiseGit自动记住用户名密码的方法
查看>>
大白话5分钟带你走进人工智能-第十七节逻辑回归之交叉熵损失函数概念(2)
查看>>
如何给变量取个简短且无歧义的名字
查看>>
跟着ALEX 学python day4集合 装饰器
查看>>
PHP跳转页面的几种实现方法详解
查看>>
获取相机视口内物体在视线范围内某点的方法
查看>>
解疑常用
查看>>
新手搭建 eclipse+winDDK驱动开发平台
查看>>
二叉树面试题
查看>>
Max Sum 贪心
查看>>
算法小题之数组重排
查看>>
Session 跨页面传数组
查看>>
Java并发(基础知识)——显示锁和同步工具类
查看>>
二叉树(2)二叉树创建的3种方法,二叉树的递归遍历,二叉树的销毁
查看>>
Hierarchyviewer定位Android图片资源的研究
查看>>
查看硬盘故障的命令
查看>>
浅析微信支付:查询订单和关闭订单
查看>>