Java8系列--Java Stream入门篇(流的操作)

1 Stream接口

1.1 接口情况

java.util.stream接口下共有DoubleStream、LongStream、IntStream、Stream四个接口,如下图所示:
stream

1.2 流的分类和使用

其中,Stream接口定义了许多方法,大体可以分为两类

  • 中间操作类
  • 终端操作类

一般来说,流的使用可以概括为三件事:

  • 一个数据源来执行一个查询
  • 一个中间操作链,形成一条流的流水线
  • 一个终端操作,执行流水线,并生成结果

1.3 结构图

liucaozuo

2 中间操作

中间操作类的返回的是另一个流,即其返回值类型是流Stream。
例如,filter或sorted方法连接起来可以形成一个查询操作,除非流水线上触发一个终端操作,否则不会执行任何处理。
总之,中间操作只是各种操作的一个顺序上的联合,它们操作的对象是流,产生的对象也是各种各样的流,只有在终端操作之后才能显示最终的操作结果。
流的中间操作常有以下几种:

操作 类型 返回类型 操作参数 函数描述符
filter 中间操作 Stream T Predicate T T -> boolean
map 中间操作 Stream R Function T,R T -> R
limit 中间操作 Stream T    
sorted 中间操作 Stream T Comparator T (T,T) -> int
distinct 中间操作 Stream T    

3 终端操作

流的终端操作会从流的流水线生成结果,其结果是任何不为流的值,比如List、Integer甚至是void。
常用的流的终端操作

操作 类型 目的
forEach 终端操作 消费流中的每个元素并对其应用Lambda。这一操作返回void
count 终端操作 返回流中元素的个数。这一操作返回long
collect 终端操作 把流归约成一个集合,比如List、Map甚至是I

你可能感兴趣的:(Java)