Stream中flatMap
时间: 2023-11-01 21:56:02 浏览: 105
flatMap 是 Stream 中的一个中间操作,它接受一个函数作为参数,将每个元素映射为一个 Stream,然后将这些 Stream 连接起来形成一个新的 Stream。
在 Stream 中使用 flatMap,可以将一个多维的数据结构展开成一个扁平化的流。例如,假设我们有一个包含多个列表的 Stream,我们可以使用 flatMap 将这些列表展开成一个单独的流。
下面是一个示例代码,演示了如何使用 flatMap 方法:
```java
List<List<Integer>> numbers = Arrays.asList(
Arrays.asList(1, 2),
Arrays.asList(3, 4),
Arrays.asList(5, 6)
);
List<Integer> flattenedNumbers = numbers.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
System.out.println(flattenedNumbers); // 输出 [1, 2, 3, 4, 5, 6]
```
在上面的代码中,我们有一个包含三个列表的 Stream(numbers),通过使用 flatMap 方法和 List::stream 函数,我们将这些列表展开成一个单独的流。最后,我们使用 collect 方法将展开后的流收集到一个列表中。
总结一下,flatMap 方法可以用于将多维数据结构展开成一个扁平化的流。
相关问题
stream.flatmap
`stream.flatMap` 是 Java 8 中 Stream API 中的一个方法,它可以将一个流中的每个元素转换为另一个流,然后将这些流合并成一个流。
例如,我们有一个包含多个字符串的流,我们可以使用 `flatMap` 方法将每个字符串拆分为单词,并将所有单词合并成一个流:
```java
Stream<String> words = Stream.of("Hello World", "Stream flatMap");
Stream<String> flatMapWords = words.flatMap(line -> Stream.of(line.split(" ")));
```
这样,`flatMapWords` 流中就包含了所有单词。
stream flatMap
### Java Stream API `flatMap` 方法使用教程
#### 什么是 `flatMap`
`flatMap` 的主要作用是将一个流中的每个元素转换为另一个流,然后将这些流合并成一个单一的流。这种方法常用于处理嵌套的数据结构或多个数据源的情况[^2]。
#### 基本语法
标准语法如下:
```java
Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)
```
此方法接受一个函数作为参数,该函数会应用于流中的每一个元素,并返回一个新的流。最终所有的新流被扁平化成为一个单独的流。
#### 实际案例分析
考虑有一个列表包含多个字符串数组的情形,目标是从这个复杂结构中提取所有独立的单词形成新的集合。
##### 示例代码展示
下面通过具体例子来说明如何利用 `flatMap` 达到目的:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class FlatMapExample {
public static void main(String[] args) {
List<String[]> wordsList = Arrays.asList(
new String[]{"hello", "world"},
new String[]{"java", "stream"}
);
// 使用 flatMap 将二维数组转化为一维流
List<String> result = wordsList.stream()
.flatMap(Arrays::stream)
.collect(Collectors.toList());
System.out.println(result); // 输出: [hello, world, java, stream]
}
}
```
这段程序展示了怎样运用 `flatMap` 来简化多层迭代逻辑,使得代码更加简洁易读[^3]。
阅读全文