collectingAndThen和Collectors.mapping
时间: 2024-11-11 18:15:17 浏览: 31
Java中的`java.util.stream.Collectors.toMap()`方法有什么作用
`collectingAndThen` 和 `Collectors.mapping` 都是 Java 8 中 Stream API 提供的用于收集数据的工具方法,它们主要用于处理复杂的数据转换场景。
`collectingAndThen` 方法接收两个参数:一个收集器(如 `toList()`、`toMap()` 等)和一个进一步操作的函数(通常是一个 Lambda 表达式)。这个方法先使用指定的收集器对流中的元素进行初步聚合,然后应用提供的函数对结果进行额外处理,并返回最终结果。例如:
```java
List<String> words = ...;
List<String> capitalizedWords = words.stream()
.collectingAndThen(Collectors.toList(), list -> list.stream().map(String::toUpperCase).collect(toList()));
```
在这个例子中,首先将所有单词收集到列表中,然后再将每个单词转成大写。
`Collectors.mapping` 则是专门用于数据映射的,它会把流中的每个元素通过给定的 Function 或 Mapper 函数转换,然后收集转换后的结果。这个方法不会改变原始流,而是生成一个新的流。例如:
```java
List<Integer> numbers = ...;
List<String> stringNumbers = numbers.stream()
.map(String::valueOf)
.collect(Collectors.toList());
```
这里将整数列表转换成了字符串列表,原始的数字流并未改变。
阅读全文