flatMap的详细使用方法和案例
时间: 2023-08-16 08:26:37 浏览: 155
flatMap是一种常见的操作符,它可以将一个元素映射为多个元素,然后将这些元素合并成一个流。具体来说,flatMap操作符会将一个流中的每个元素映射为一个流,然后将这些流合并成一个新的、扁平化的流。下面是flatMap的详细使用方法和案例:
1. 方法签名:
```java
<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)
```
2. 使用案例:
```java
List<String> words = Arrays.asList("Hello", "World");
List<String> uniqueChars = words.stream()
.flatMap(s -> Arrays.stream(s.split("")))
.distinct()
.collect(Collectors.toList());
System.out.println(uniqueChars);
// Output: [H, e, l, o, W, r, d]
```
上面的代码将一个包含两个字符串的列表words映射成一个包含所有字符的流,然后通过distinct去重,最后将结果收集到一个列表中。
另一个常见的案例是将多个列表合并成一个列表:
```java
List<List<Integer>> lists = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4));
List<Integer> mergedList = lists.stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
System.out.println(mergedList);
// Output: [1, 2, 3, 4]
```
上面的代码将一个包含两个列表的列表lists映射成一个包含所有元素的流,然后将结果收集到一个列表中。
总之,flatMap是一个非常强大的操作符,可以用于各种数据处理场景,特别是对于嵌套的数据结构,它可以将它们扁平化,使得它们更容易被处理。
阅读全文