Java8新特性之Stream
前言 在想很好了解 Stream 之前,很有必要简单的了解下函数式变成以及Lambda的概念,可以阅读另外一篇 Java8新特性之Lambda 大家回忆下日常学习工作中使用的最多的 Java API 是什么?相信很多人的答案和我一样都是集合。我们选择适合的集合数据结构存储数据,而我们之于集合最多的操作就是遍历,实现查询,统计,过滤,合并等业务。 哪里用Stream 集合迭代 外部迭代:通过 for循环,Iterator迭代器遍历集合,手动的拿到集合中每个元素进行相应处理 优点 对于程序的掌控更高 性能强(如果算法功力深厚) 缺点 很多重复的模板代码 需要很多中间临时变量来减少遍历次数 性能完全取决于程序员水平,烧脑 代码不易读 容易出错:例如for循环遍历LinkedList会出错 内部迭代:只提供对集合中元素的处理逻辑,遍历过程交给库类,Java5提供了foreach,Java8提供了Stream 优点 代码好读 简单,只需要提供处理逻辑 缺点 有些情况性能比外部迭代差一点点 在使用foreach时不能对元素进行赋值操作 为什么要Stream 本文要介绍的Stream属于内部迭代,之前我们已经有了foreach减少了我们的代码量,为什么我们还需要Stream呢? 流水线的方式处理集合,结合Lambda爽歪歪 代码超短超好读 Stream的开始到结束就相当于一次遍历