Java8新特性JDK8之流Stream实战
什么是Stream?
- Stream 中文称为 “流”,通过将集合转换为这么一种叫做 “流”的元素队列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的流水线操作
- 元素是特定类型的对象,所以元素集合看作一种流, 流在管道中传输, 且可以在管道的节点上进行处理, 比如 排序,聚合,过滤等操作
操作详情
- 数据元素便是原始集合,如List、Set、Map等
- 生成流,可以是串行流stream() 或者并行流 parallelStream()
- 中间操作,可以是 排序,聚合,过滤,转换等
- 终端操作,很多流操作本身就会返回一个流,所以多个操作可以直接连接起来,最后统一进行收集
快速上手
为现有List集合中每个元素前添加“在小滴课堂学习”(后面章节详细讲解)
public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList("springboot教程","微服务教程","并发编程","压力测试","架构课程");
List<String> resultList = list.stream().map(obj->"在小滴课堂学:"+obj).collect(Collectors.toList());
System.out.println(resultList);
}
}
流式编程的优点
- 无存储**。stream不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一个数组,Java容器或I/O channel等。**
- 为函数式编程而生**。对stream的任何修改都不会修改背后的数据源,比如对stream执行过滤操作并不会删除被过滤的元素,而是会产生一个不包含被过滤元素的新stream。**
- 惰式执行**。stream上的操作并不会立即执行,只有等到用户真正需要结果的时候才会执行。**
- 可消费性**。stream只能被“消费”一次,一旦遍历过就会失效,就像容器的迭代器那样,想要再次遍历必须重新生成。**
原文:
点此跳转原文