java8新特性[3]:流(Stream)的介绍

栏目:Java8新特性 作者:admin 日期:2018-10-30 评论:0 点击: 49 次

流是Java8 类库中新增的关键抽象,它被定义于 java.util.stream,这个包里有若干流类型:Stream<T> 代表对象引用流,此外还有一系列特化(specialization)流,比如 IntStream 代表整形数字流。每个流代表一个值序列,流提供一系列常用的聚集操作,使得我们可以便捷的在它上面进行各种运算。集合类库也提供了便捷的方式使我们可以以操作流的方式使用集合、数组以及其它数据结构。流的操作可以被组合成流水线(Pipeline)。以上文的例子为例,如果我们只想把蓝色改成红色:

在 Collection 上调用 stream() 会生成该集合元素的流视图(stream view),接下来 filter() 操作会产生只包含蓝色形状的流,最后,这些蓝色形状会被 forEach 操作设为红色。如果我们想把蓝色的形状提取到新的 List 里,则可以:

collect() 操作会把其接收的元素聚集(aggregate)到一起,这里是 List,collect()方法的参数则被用来指定如何进行聚集操作。在这里我们使用 toList() 以把元素输出到 List 中。
如果每个形状都被保存在 Box 里,然后我们想知道哪个盒子至少包含一个蓝色形状,我们可以这么写:

map() 操作通过映射函数(这里的映射函数接收一个形状,然后返回包含它的盒子)对输入流里面的元素进行依次转换,然后产生新流。
如果我们需要得到蓝色物体的总重量,我们可以这样表达:

这些例子演示了流框架的设计,以及如何使用流框架解决实际问题。

网站公告
欢迎加入金燕知识社群,更多介绍请查阅:知识社群

java8新特性[3]:流(Stream)的介绍:等您坐沙发呢!

发表评论


------====== 本站公告 ======------
金丝燕网,即将迎来四周年!