lambad表达式
中间操作
filter:可以对流中的元素进行条件过滤,符合过滤条件的才能继续留在流中
map:可以对流中的元素进行计算或转换
distinct:可以去除流中的重复的元素
sorted:可以对流中的元素进行排序
limit:可以设置流的长度 超出的部分将会被抛弃掉
skip:跳出流中的前n个元素,返回剩下的元素
flatMap:map只能把一个对象转换成另一个对象来作为流中的元素。而flatmap可以把一个对象转换成多个对象作为流中的元素
终结操作
foreach:对流中的元素进行遍历操作,我们通过传入的参数去指定对遍历的元素进行什么具体的操作
count:可以用来统计当前流中的元素的个数
max min:可以取到流里的最大值和最小值
collect:把当前流转换成集合
查找与匹配
anyMatch:可以判断是否有任意符合匹配条件的元素,结果类型是boolean类型
allMatch:查看是否全部符合 结果类型是boolean类型
noneMatch:没有一个符合
findAny:获取流中的任意一个元素 该元素不一定是第一个元素
findFirst:获取流里的第一个元素
reduce:归并
对于流中的数据按照制定的计算方式计算出一个结果(缩减操作)
reduce的作用把stream中的元素给组合起来,我们可以传入一个初始值 它会按照我们指定的计算方式依次拿流中的元素和在初始值的基础上进行计算,计算结果再和后面的元素进行计算
optional 操作
过滤
我们可以使用filter方法对数据进行过滤 如果原本是有数据的 但不符合判断条件 也会变成一个无数据的Optional对象
判断
isPresent方法判断是否存在数据 如果为空返回false 不为空返回为true
更推荐 ifPresent方法
数据转换
map进行数据转换 转换得到的数据是Optional封装好的保证了我们使用的安全性
函数式接口
只有一个抽象方法的接口叫做函数式接口
都有下面的注解
@FunctionalInterface
and
or
negate:取反 !
方法引用
基本格式
类名或者对象名::方法名
引用类的静态方法
格式 类名::方法名
使用前提
如果我们在重写方法的时候,方法体中只有一行代码,并且这行代码调用了某个类的静态方法,并且我们要把重写的抽象方法中所有的参数都按照顺序传入了这个静态方法中,这个时候我们就可以引用类的静态方法。
几个例子