资源说明: Java 8 Stream Collectors 功能与操作方法详解
Java 8 Stream Collectors 是 Java 8 中的一个重要功能,位于 java.util.stream 包下。它提供了一系列的静态方法供我们使用,通常情况下我们可以静态导入即可使用。Collectors 的主要作用是将元素收集归纳起来,比如将元素装入 Map、Set、List 等可变容器中。特别对于 Java 8 Stream Api 来说非常有用。
1. Collectors 的作用
Collectors 是 Java 8 加入的操作类,主要用于对 Stream 流进行终结操作派生出基于各种策略的结果集。我们可以借助于 Stream 来熟悉一下 Collectors。
2. Collectors 的方法
Collectors 提供了一系列的静态方法供我们使用,通常情况下我们可以静态导入即可使用。主要包括以下几种方法:
### 3.1 类型归纳
这是一个系列,作用是将元素分别归纳进可变容器 List、Map、Set、Collection 或者 ConcurrentMap。
* `Collectors.toList();`
* `Collectors.toMap();`
* `Collectors.toSet();`
* `Collectors.toCollection();`
* `Collectors.toConcurrentMap();`
我们可以根据以上提供的 API 使用 Stream 的 collect 方法中的转换为熟悉的集合容器。
### 3.2 joining
将元素以某种规则连接起来。该方法有三种重载:
* `joining(CharSequence delimiter)`
* `joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix)`
例如:
```
servers.stream().collect(Collectors.joining());
// 输出 FelordcnTomcatJettyUndertowResin
servers.stream().collect(Collectors.joining(","));
// 输出 Felordcn,Tomcat,Jetty,Undertow,Resin
servers.stream().collect(Collectors.joining(",", "[", "]"));
// 输出 [Felordcn,Tomcat,Jetty,Undertow,Resin]
```
### 3.3 collectingAndThen
该方法先执行了一个归纳操作,然后再对归纳的结果进行 Function 函数处理输出一个新的结果。
例如:
```
servers.stream().collect(Collectors.collectingAndThen(Collectors.joining(","), String::toUpperCase));
// 输出 FELORDCN,TOMCAT,JETTY,UNDERTOW,RESIN
```
### 3.4 groupingBy
按照条件对元素进行分组,和 SQL 中的 group by 用法有异曲同工之妙,通常也建议使用 Java 进行分组处理以减轻数据库压力。
例如:
```
// 按照字符串长度进行分组
servers.stream().collect(Collectors.groupingBy(String::length));
```
Collectors 是 Java 8 Stream Api 中的一个重要功能,提供了一系列的静态方法供我们使用,可以帮助我们更方便地对 Stream 进行处理和操作。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。