stream().flatmap怎么使用
时间: 2023-05-14 14:05:49 浏览: 275
stream().flatmap 是 Java 8 中 Stream API 中的一个方法,它可以将一个 Stream 中的每个元素转换为一个 Stream,然后将这些 Stream 合并成一个新的 Stream。使用时需要传入一个 Function 接口的实现,该实现将每个元素转换为一个 Stream。例如:
List<List<Integer>> list = Arrays.asList(
Arrays.asList(1, 2),
Arrays.asList(3, 4),
Arrays.asList(5, 6)
);
List<Integer> result = list.stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
// result: [1, 2, 3, 4, 5, 6]
这里将一个包含多个 List 的 List 转换为一个包含所有元素的 List。
相关问题
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.of.flatMap
`flatMap`是Java 8中`Stream`类的一个方法,它接受一个函数作为参数,并将其应用于流中的每个元素。与`map`方法不同的是,`flatMap`方法返回的是一个新的流,而不是一个指定类型的值。
`flatMap`方法的函数参数是一个`Function`,它将流中的每个元素映射为一个新的流。然后,`flatMap`方法将这些新的流合并成一个单一的流。这意味着,如果原始流中有n个元素,而每个元素映射为一个新的流,那么最终的流将包含n个新的流中的所有元素。
下面是一个示例,演示了如何使用`flatMap`方法:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("Hello", "World");
List<String> list2 = Arrays.asList("Java", "Stream");
Stream<List<String>> stream = Stream.of(list1, list2);
Stream<String> flatStream = stream.flatMap(List::stream);
flatStream.forEach(System.out::println);
}
}
```
输出结果为:
```
Hello
World
Java
Stream
```
在上面的示例中,我们首先创建了两个字符串列表`list1`和`list2`。然后,我们使用`Stream.of`方法将这两个列表转换为一个流。接下来,我们使用`flatMap`方法将这个流中的每个列表映射为一个新的流,并将这些新的流合并成一个单一的流。最后,我们使用`forEach`方法打印出最终的流中的所有元素。
阅读全文