温馨提示×

java中flatmap和map有什么区别

小亿
181
2023-12-21 06:17:25
栏目: 编程语言

在Java中,flatMapmap都是用于转换流中的元素的方法,但它们具有一些不同之处。

  1. 返回类型:map方法将流中的每个元素映射到一个新的值,然后返回一个包含这些新值的流。而flatMap方法将流中的每个元素映射到一个流,然后将这些流连接起来成为一个新的流。

  2. 扁平化:由于flatMap会将元素映射为一个流,所以它可以用于将多个流合并成一个流。而map只能进行一对一的元素映射。

举个例子,假设有一个包含多个字符串的流,我们想将每个字符串拆分成单个字符并返回一个包含这些字符的流。可以使用flatMap方法将每个字符串映射为字符流,并将这些字符流合并成一个流。示例代码如下:

List<String> strings = List.of("Hello", "World");
// 使用flatMap将每个字符串映射为字符流,然后将这些字符流合并成一个流
List<Character> characters = strings.stream()
                                    .flatMap(str -> str.chars().mapToObj(c -> (char) c))
                                    .collect(Collectors.toList());
System.out.println(characters); // 输出: [H, e, l, l, o, W, o, r, l, d]

另一方面,如果我们只想将每个字符串转换为大写形式,可以使用map方法将每个字符串映射为大写形式的字符串,并返回一个包含这些字符串的流。示例代码如下:

List<String> strings = List.of("Hello", "World");
// 使用map将每个字符串映射为大写形式的字符串
List<String> upperCaseStrings = strings.stream()
                                       .map(String::toUpperCase)
                                       .collect(Collectors.toList());
System.out.println(upperCaseStrings); // 输出: [HELLO, WORLD]

综上所述,flatMap用于将多个流合并成一个流,而map用于进行一对一的元素映射。

0