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

Java可选地图和orElse(if-else样式)的链接

通飞尘
2023-03-14
问题内容

Java中是否有一种优雅的流式处理方式,可以说“如果此Optional映射到具有计算值的另一个Optional,如果该值存在,则返回一个空的Optional”?

我想到了类似的东西:

Optional<Float> amount = ...;
Optional<MonetaryAmount> myAmount = amount
    .map(theAmount -> FastMoney.of(theAmount, "EUR")).orElse(Optional.empty());

但这是不可能的。

我想出的解决方案有些冗长,而不像流式:

Optional<Float> amount = ...;
Optional<MonetaryAmount> myAmount = amount.isPresent() ?
          Optional.of(FastMoney.of(amount.get(), "EUR")) : Optional.empty();

问题答案:

您不需要以下orElse子句:

Optional<Float> amount = ...;
Optional<MonetaryAmount> myAmount =
    amount.map(theAmount -> FastMoney.of(theAmount, "EUR"));


 类似资料:
  • 我一直在使用Java 8中的新的可选类型,我遇到了一个似乎不受功能支持的常见操作:“orelseoptional” 请考虑以下模式: 这种模式有很多种形式,但归结起来就是在一个可选项上需要一个“orelse”,该“orelse”接受一个函数,生成一个新的可选项,只有当当前的可选项不存在时才调用。 它的实现如下所示: 我很好奇这样一种方法不存在的原因,如果我只是在一种无意的方式下使用Optional

  • 为什么这段代码会抛出异常?为什么它还要去“奥雷尔斯”分店? 这是因为某种怪异的处决令吗?那么在计算orElse分支之前没有设置第一个可选项的值?

  • 你好,我有两个代码示例 if/else if/else语句 可选语句 所以我的问题是这两者在性能方面是如何比较的(我在实际代码上有大约15-20个if-else语句)? 是否值得重构代码可读性与性能之间的关系,或者是对选项的误用? 另外,如果if/else-if语句增长到100+时,性能损失是什么? 提前致谢

  • null 这段代码似乎工作正常,并允许我处理admin guild命令,即由“权限级别”(最高角色级别)至少是我指定的一个的成员在我的Discord服务器的文本通道中发送的命令。 但是如何正确地(反应性地、好地)实现其余的命令呢?我在Reactor中没有找到类似if/else链接的东西,我也不想重复以上代码几次,只更改1-2行。

  • 这个示例代码来自一本Java书籍,从墙上的99瓶啤酒到没有啤酒打印出这首歌。问题是,当墙上是1瓶啤酒时,它仍然写着瓶子。我试图通过在末尾添加部分来解决这个问题。但是,它仍然显示1瓶啤酒在墙上,我瓶啤酒在墙上。 我不知道该改变什么来解决这个问题。是否创建另一个while部分? 如果你能给他们一个提示,这样我就可以自己解决它,那也很酷!因为我知道我的实际歌曲输出是在第一个if部分,但我不知道我应该在哪

  • Perl条件语句有助于决策,这需要程序员指定一个或多个要由程序评估或测试的条件,以及在条件被确定为真时要执行的一个或多个语句,以及可选的其他条件如果确定条件为假,则执行语句。 以下是大多数编程语言中的典型决策结构的一般性 - 数字0,字符串'0'和“”,空列表()和undef在布尔上下文中都是false ,所有其他值都为true 。 否定真正的价值! 或not返回特殊的假值。 Perl编程语言提供