stream().flatMap
时间: 2023-11-28 21:44:46 浏览: 23
Java 8引入了Stream API,它提供了一种新的处理集合的方式。Stream API提供了一些方法来处理集合中的元素,其中之一是flatMap()方法。
flatMap()方法可以将一个Stream中的每个元素转换为另一个Stream,然后将所有Stream连接成一个Stream。这个方法通常用于将嵌套的集合展开为单个集合。
下面是一个简单的例子,假设我们有一个字符串列表,我们想要将每个字符串拆分为单个字符,并将所有字符连接成一个列表:
```
List<String> list = Arrays.asList("hello", "world");
List<String> result = list.stream()
.flatMap(str -> Arrays.stream(str.split("")))
.collect(Collectors.toList());
System.out.println(result); // [h, e, l, l, o, w, o, r, l, d]
```
在这个例子中,我们首先将字符串列表转换为Stream,然后使用flatMap()方法将每个字符串转换为一个字符Stream,最后使用collect()方法将所有字符收集到一个列表中。
相关问题
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()
`stream.flatMap()` 是一个 Java 8 中的中间操作,它可以将一个流中的每个元素转换为一个流,并将所有生成的流中的元素合并成一个新的流。具体来说,`flatMap()` 方法接收一个函数作为参数,该函数将每个元素映射到一个流,然后将所有生成的流中的元素合并成一个新的流。
示例代码:
```java
List<List<Integer>> nestedList = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4));
List<Integer> flatList = nestedList.stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
```
在上面的例子中,我们有一个包含两个列表的列表 `nestedList`,通过使用 `flatMap()` 方法,我们将它转换为一个包含所有元素的单个列表 `flatList`。首先,`stream()` 方法将 `nestedList` 转换为一个流,然后 `flatMap()` 方法将每个子列表转换为一个流,并将所有生成的流中的元素合并成一个新的流。最后,`collect()` 方法将新的流中的元素收集到一个列表中。