视频地址:https://www.bilibili.com/video/BV1sE411P7C1?p=4
全免费代码及文章:https://www.kancloud.cn/hanxt/javacrazy/content
视频的笔者博客:www.zimug.com
1.Lambda表达式
匿名内部类实现接口
简化后
2.Stream代替for循环
对nameStrs进行filter操作,筛选出所有以L开始的元素,map表示对每一个数据进行处理,此处为变为大写,sorted为排序,collect为转换成list。
例子:
2.1将文件读取为stream形式:
3.Stream的filter函数与谓词逻辑
此处filter的参数为Predicate:
Predicate是谓语,谓词的意思,所以关于Predicate的逻辑叫谓词逻辑
可在对应实体类中定义Predicate:
使用定义好的Predicate:
4.Stream的map数据转换
对元素进行逐个处理
不仅可以对数据格式进行转换,也可以转换成对应长度
例子:将对象中所有age加一,并将性别为M的转换为Male,F转换成Female
如果不想写return e;的话,可以使用peek函数,Peek属于一种特殊的map函数,此时入参属于引用数据类型,等价于上图的map
多维数组数据转换,使用flatmap
5.Stream的状态与并行操作
有状态操作:涉及其他元素
无状态操作:只涉及单个元素
Stream默认为串行sequential()模式,在进行无状态操作时,可使用parellel()并行处理方式对元素进行处理,效率会比较高。并行模式的处理效率和CPU的核数相关。
6.关于Stream性能不要人云亦云