当前位置: 首页 > 面试题库 >

Java 8-Optional.flatMap和Optional.map之间的区别

乐正意智
2023-03-14
问题内容

这两种方法有什么区别:Optional.flatMap()Optional.map()

一个例子将不胜感激。


问题答案:

使用map如果函数返回的对象,你需要或者flatMap如果该函数返回的Optional。例如:

public static void main(String[] args) {
  Optional<String> s = Optional.of("input");
  System.out.println(s.map(Test::getOutput));
  System.out.println(s.flatMap(Test::getOutputOpt));
}

static String getOutput(String input) {
  return input == null ? null : "output for " + input;
}

static Optional<String> getOutputOpt(String input) {
  return input == null ? Optional.empty() : Optional.of("output for " + input);
}

两个打印语句都打印相同的内容。



 类似资料:
  • 这两种方法:和有什么区别? 请举例说明。

  • 对可选项使用flatMap时出现异常: 为什么我不能用同样的方法呢?

  • 鉴于这段代码: 这部分: 可以重写为: 我从一本书的示例中提取了这段代码,并说这两种解决方案不同,但我不理解为什么。

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。