stream().flatMap()使用示例
时间: 2024-06-05 08:10:48 浏览: 70
当我们需要将一个 Stream 中的每个元素的子元素映射到一个新的 Stream 上时,就可以使用 Stream 的 flatMap() 方法。具体来说,flatMap() 方法会将每个元素映射为一个 Stream,然后将所有的 Stream 连接起来形成一个新的 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());
在上面的代码中,我们首先定义了一个包含多个 List 的 List。然后我们使用 stream() 方法将其转换成 Stream。接着,我们调用 flatMap() 方法并传入 Collection::stream,该方法将每个 List 转换为一个 Stream,然后将所有的 Stream 连接起来形成一个新的 Stream。最后我们使用 collect() 方法将新的 Stream 转换为一个 List,得到的结果为 [1, 2, 3, 4, 5, 6]。
相关问题
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.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()` 方法将新的流中的元素收集到一个列表中。
阅读全文