码之初

Java8 Stream终端操作使用详解

2020-03-16  本文已影响0人  庸人视角

前情回顾

前几篇讲了Java8中Stream流的简介,创建流的方式,以及Stream流中间操作的使用详解,想回顾的可以戳:

话不多说,自己挖的坑自己要填完,今天就给大家讲完Java8中Stream的终端操作使用详解。Stream流的终端操作主要有以下几种,我们来一一讲解。

终端操作代码实例详解

1、forEach():遍历流中的每一个元素,按照指定的方法执行,执行顺序不一定按照流的顺序。

// foreach:遍历流中每一个元素,执行顺序按照流的顺序

运行结果:

1

2

3

4

5

6

2

1

6

5

3

4

2、forEachOrdered():遍历流中的每一个元素,按照指定的方法执行,执行顺序按照流的顺序。

// forEachOrdered():遍历流中每一个元素,执行顺序按照流的顺序

运行结果:

1

2

3

4

5

6

1

2

3

4

5

6

3、toArray():将流中的元素放入到一个数组中

// toArray():将流中的元素放入到一个数组中

运行结果:[ma, zhi, chu]

4、reduce():这个方法的主要作用是把 Stream 元素组合起来。它提供一个起始值(种子),然后依照运算规则(BinaryOperator),和前面 Stream 的第一个、第二个、第 n 个元素组合。从这个意义上说,字符串拼接、数值的 sum、min、max、average 都是特殊的 reduce。

// reduce():字符串拼接

运行结果:

mazhichu

mazhichu

10

10

10

-6.6

5、collect():是Stream的一个函数,负责收集流。前面我们说中间操作是将一个流转换成另一个流,这些操作是不消耗流的,但是终端操作会消耗流,产生一个最终结果,collect()就是一个规约操作,将流中的结果汇总。结果是由传入collect()中的Collector定义的。

// collect():负责收集流,将结果汇总,比如将下面的流中的结果汇总到一个集合中去

运行结果:[91, 92, 93, 94, 95, 96, 97, 98, 99]

6、min():返回流中的最小值

// min():返回流中的最小值

运行结果:

1

1

7、max():返回流中的最大值

// max():返回流中的最大值

运行结果:

6

6

8、count():返回流中元素的数量

// count():返回流中元素的数量

运行结果:

5

3

9、anyMatch():Stream 中只要有一个元素符合传入的断言,就返回 true,否则返回false。

// anyMatch():判断流中数据是否有一个复合断言

运行结果:

true

false

false

10、allMatch():Stream 中所有元素都符合传入的断言时返回 true,否则返回false,流为空时总是返回true。

// allMatch():判断流中元素是否都符合断言条件

运行结果:

true

false

true

11、noneMatch():Stream 中所有元素都不满足传入的断言时返回 true,否则返回false。

 // noneMatch():判断流中元素是否都不符合传入的断言条件

运行结果:

true

false

true

12、findFirst():总是返回流中的第一个元素,如果流为空,返回一个空的Optional.

// findFirst():返回流中的第一个元素

运行结果:

Optional[1]

true

1

Optional.empty

false

13、findAny():返回流中的任意一个元素即可,如果流为空,返回一个空的Optional.

// findAny():返回流中任意一个元素,

运行结果:

Optional[1]

true

1

Optional.empty

false

以上就是Stream的13个终端操作,流的操作是以管道的方式串起来的。流管道包含一个数据源,接着包含零到N个中间操作,最后以一个终端操作结束。下面我们来总结一下Stream流。

Stream有以下特性及优点

上一篇 下一篇

猜你喜欢

热点阅读