java8--Stream和函数接口

  • Stream流:方便操作集合的API

Collection下的List,Set类型,都能直接调用stream()方法获取串行流,parallelStream()获取并行流,但考虑到线程安全,性能开销等方面,parallelStream()谨慎使用。

Arrays.stream():参数中可以传入一个数组转为流

Stream 中间操作:

filter():接收Lambda ,从流中排除某些元素

limit():截断流,使其元素不超过给定数量

skip(n): 返回一个扔掉了前n个元素的流。若流中元素不足n个,则返回一个空,与limit(n)互补

distinct():通过流所生成元素的hashCode()和equals()去除重复元素

map():将元素转换成其他形式或者提取信息。接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素

flatMap():与map类似,区别在于将元素转换成流,并将结果中的流合并成一个流,

sorted():有两种方法,一种是不传任何参数,叫自然排序,还有一种需要传Comparator 接口参数,叫做定制排序

Stream 终止操作:

allMatch():检查是否匹配所有元素

anyMatch():检查是否至少匹配所有元素

noneMatch():检查是否没有匹配所有元素

findFirst ():返回第一个元素【findFirst 返回的是一个Optional的对像,他将我们的真实对象封装了一层,这是为了避免空指针。而且这个Optional对象为我们提供了一个orElse方法,作用是当我们得到的这个对象为空时,我们可以传入一个新的对象去替代它】

findAny():返回当前流中任意元素

count ():返回流中元素总个数

max ():返回流中最大值

min():返回流中最小值

collect():将流转换为其他形式。接收一个Collector接口的实现,将流中的元素收集到List,Set,Map等。

collect可用的Collector的收集器实现有:

Collectors.toList() 将流转换成List;

Collectors.toSet()将流转换为Set;

Collectors.toCollection()将流转换为其他类型的集合;

Collectors.counting()  元素个数;

Collectors.groupingBy()分组 ,生成一个 Map<K, List<T>>
 

  • 四大函数式接口:只有一个抽象方法的接口

Consumer:有入参无返回值

Function:有入参有返回值

Predicate:有入参返回boolean值

Supplier:无入参有返回值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值