java8中map和flatmap的区别
时间: 2023-04-23 18:06:39 浏览: 238
在Java 8中,map和flatMap是两个不同的函数式接口。map函数将一个元素映射到另一个元素,而flatMap函数将一个元素映射到一个流(Stream)。
具体来说,map函数接收一个函数作为参数,该函数将一个元素转换为另一个元素。例如,将一个字符串转换为它的长度:
```
List<String> strings = Arrays.asList("hello", "world");
List<Integer> lengths = strings.stream()
.map(s -> s.length())
.collect(Collectors.toList());
```
在上面的代码中,map函数将每个字符串转换为它的长度,并将结果收集到一个列表中。
相比之下,flatMap函数接收一个函数作为参数,该函数将一个元素转换为一个流(Stream)。例如,将一个字符串拆分为单词:
```
List<String> strings = Arrays.asList("hello world", "goodbye world");
List<String> words = strings.stream()
.flatMap(s -> Arrays.stream(s.split(" ")))
.collect(Collectors.toList());
```
在上面的代码中,flatMap函数将每个字符串拆分为单词,并将所有单词组成一个流。最后,这个流被收集到一个列表中。
因此,map和flatMap的区别在于它们的返回类型不同:map返回一个元素,而flatMap返回一个流。
阅读全文