flatMap 常见用法
时间: 2023-07-24 07:13:52 浏览: 123
除了上面提到的在 Stream 操作中的用法之外,flatMap 在其他情况下也有一些常见的用法。
1. 处理嵌套的集合:如果你有一个嵌套的集合,可以使用 flatMap 将其展开为一个扁平化的集合。例如:
```java
List<List<Integer>> nestedList = Arrays.asList(
Arrays.asList(1, 2, 3),
Arrays.asList(4, 5, 6),
Arrays.asList(7, 8, 9)
);
List<Integer> flattenedList = nestedList.stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
System.out.println(flattenedList); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
2. 处理 Optional 类型:使用 flatMap 可以方便地处理 Optional 类型的数据。当你有一个包装在 Optional 中的值,并且需要对其进行某种操作时,可以使用 flatMap 来避免不必要的嵌套。例如:
```java
Optional<String> maybeName = Optional.of("John");
Optional<String> maybeUpperName = maybeName.flatMap(name -> Optional.of(name.toUpperCase()));
System.out.println(maybeUpperName.orElse("No name")); // JOHN
```
3. 处理多个数据源:如果你有多个数据源,并且需要将它们合并成一个单一的数据源,可以使用 flatMap。例如:
```java
List<Integer> nums1 = Arrays.asList(1, 2, 3);
List<Integer> nums2 = Arrays.asList(4, 5, 6);
List<Integer> mergedList = nums1.stream()
.flatMap(num1 -> nums2.stream().map(num2 -> num1 + num2))
.collect(Collectors.toList());
System.out.println(mergedList); // [5, 6, 7, 6, 7, 8, 7, 8, 9]
```
在这个示例中,我们将 nums1 中的每个元素与 nums2 中的每个元素相加,并将结果合并成一个新的 List。
这些是 flatMap 的一些常见用法,它可以帮助你处理嵌套的数据结构、Optional 类型以及合并多个数据源等场景。
阅读全文