stream流的使用,是基于lambda表达式之上的,所以先从函数式接口和lambda表达式开始
函数式接口的特征也很明显,他是一个接口,且有且只有一个方法。并且还有一个注解@FunctionalInterface。
在stream流中,有很多api的参数为Predicate,Consumer,Function等,下面就总结一下这些参数的意思。
Predicate: 传入指定类型,并返回Boolean。
下面这段常见的代码意思是在bos中过滤出coopCount等于1000的数据
我们点开其中的filter方法
可以看到它的参数是一个Predicate,由此可以知道,Predicate根据传入进去的行为条件来进行判断,流中的数据是否满足条件,如果结果为true,那么Stream流的 filter 方法将会留用元素;如果结果为false,那么 filter 方法将会舍弃元素。
Consumer: 传入任意类型,无返回值的操作
在stream的使用中,我们常常使用forEach来操作遍历流
点开forEach
Function: 传入T类型返回R类型。
下面是把bos中的类型,映射成了CooperateYearDistribution类型。
点开map可以看见
map接收一个Function参数