stream.flatmap
时间: 2023-11-17 22:55:52 浏览: 86
`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` 流中就包含了所有单词。
相关问题
list.stream.flatMap
flatMap()方法是Stream API中的一个方法,它的作用是将多个流合并成一个流。通过flatMap()方法,我们可以将一个包含多个子集合的流合并成一个包含所有元素的流。
在使用flatMap()方法时,我们可以结合其他的API进行过滤或转换操作。例如,使用filter()方法可以过滤掉不满足条件的元素,使用map()方法可以对元素进行转换操作。
下面是一个使用flatMap()方法的示例代码:
```java
List<List<Integer>> lists = new ArrayList<>();
List<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(3);
arrayList.add(22);
arrayList.add(11);
arrayList.add(44);
arrayList.add(null);
arrayList.add(4);
lists.add(arrayList);
List<Integer> arrayList2 = JSON.parseArray(JSON.toJSONString(arrayList), Integer.class);
arrayList2.add(55);
lists.add(arrayList2);
List<Integer> arrayList3 = JSON.parseArray(JSON.toJSONString(arrayList), Integer.class);
arrayList3.add(99);
arrayList3.add(-2);
lists.add(arrayList3);
List<Integer> collect = lists.stream()
.flatMap(item -> item.stream().filter(Objects::nonNull))
.collect(Collectors.toList());
System.out.println(collect);
```
这段代码将一个包含多个子集合的lists流使用flatMap()方法合并成一个包含所有元素的流,并且过滤掉了null元素。最后的输出结果是:[1, 3, 22, 11, 44, 4, 1, 3, 22, 11, 44, 4, 55, 1, 3, 22, 11, 44, 4, 99, -2]。
stream.map 和stream.flatmap的区别
stream.map 和 stream.flatMap 的区别在于,stream.map 将每一个元素映射为一个新的元素,而 stream.flatMap 将每一个元素映射为一个可能包含多个元素的流。因此,stream.flatMap 可以用于将流中的每个元素拆分为多个元素进行处理。
阅读全文