Java8新特性之流式API
StreamAPI
流式API是Java8中更新的一大亮点,我们往往需要对一组数据进行多次的不同条件的筛选过滤,最终从原始的这组数据中获取到我们想要的数据,StreamAPI的出现使得对于集合中的数据的层层筛选的业务逻辑操作简化了很多,一行代码即可完成多项操作。
为什么需要流式API
它专门针对集合的各种操作提供各种非常便利,简单,高效的API, Stream API 主要是通过Lambda 表达式完成,极大的提高了程序的效率和可读性,同时Stram API 中自带的并行流使得并发处理集合的门槛再次降低,使用Stream API 编程无需多写一行多线程的大门就可以非常方便的写出高性能的并发程序。
流式API的操作步骤
- 获取流
- 中间处理
- 结尾处理
下面就看一个简单的例子
public class StreamDemo {
public static void main(String[] args) {
//获取流
OptionalDouble s = Arrays.stream(new int[] {9,8,11,5,6,3,2,0})
//中间处理
.filter(i-> i >= 5 && i <= 10)//获取大于等于5,小于等于10的元素
.sorted()//排序
.distinct()//去除重复元素
.skip(1)//跳过一个元素
.limit(2)//截取长度为2
//结尾处理
// .forEach(i->System.out.println(i));//输出
// .count();//统计
// .sum(); //求和
.average();//求平均值
// .max();//求最大值
System.out.println(s.getAsDouble());
// System.out.println(s.getAsInt());
}
}
可以看到流式API在处理集合中的数据时,代码非常的简洁明了,一步到位,省去了大量用于筛选的的逻辑判断语句,使得我们的代码的可读性大大提升。需要注意的是StreamAPI比较像一个迭代器,他对于数据的处理是单向的。