当前位置: 首页 > 知识库问答 >
问题:

如果当前不存在,则在流中添加另一个可选项[重复]

鲍建业
2023-03-14
public static BigDecimal calculateSomething(List<Type> myList, Optional<Type> secondOne) {

    return myList.stream()
                 .findFirst()
                 .map(x -> x.getBalance().subtract(x.getAmount()))
                 .orElse(secondOne.map(x -> x.getBalance().subtract(x.getAmount()))
                                   .orElse(BigDecimal.ZERO));
}

如果存在,我想在myList中的firstOne上做一些映射。如果不是,我想在第二个上做同样的事情。如果它也不存在,则返回零。

有没有一种方法可以在一个流中编写此代码,并减少代码重复和可选的流中的流?

共有1个答案

杜俊远
2023-03-14

是的:

return myList.stream().findFirst()
     .or(() -> secondOne)
     .map(x -> x.getBalance().subtract(x.getAmount()))
     .orElse(BigDecimal.ZERO));
 类似资料:
  • 我有以下Java 8代码: 它工作正常,但我想知道如何将调用链接到不使用。我试过使用,但它不允许返回另一个

  • 问题内容: 我有两个表,将值存储为。 我正在填充表,如果其他表中不存在值,则只想在其中一个表中插入值。 就像是: 我怎样才能做到这一点? 问题答案: 您需要使用某种类型的查询。 更新(在澄清之后): 例如,如果相应的行在中尚不存在,则下面是如何在其中插入行: 要用同一查询插入多行,恐怕没有什么比这更好的了 原始答案 例如,这将从满足该子句的所有行中提取,并使用用作的值插入行。它将忽略重复的键错误。

  • 问题内容: 我有一个钥匙型课。让我们称为map的实例。 我要添加{ ,}(是的一个实例,并且一)该地图。但是,如果键已经存在,我想求和该映射图中的当前值。 目前我使用 但是在Java 8中是否有一种时髦的方式来做到这一点,例如使用和? 遗憾的是我无法弄清楚。 谢谢。 问题答案: 这就是地图上的合并功能的作用。 这可以进一步减少到 它基本上等于

  • 问题内容: 尝试通过一些非常有限的知识和经验来进行SQL查询。尝试了很多我通过搜索发现的内容,但没有得出我想要的结果。 我有四个表: 回复:KITS-[KIT_NO]和[ITEM_NO]都位于ITEMS表中。它们的串联是PK。 我想选择ORDERS,ORDERS.DATE,ORDER_DETAILS.ITEM_NO,ITEMS.DESC 没问题。一些简单的内部联接,我在路上。 困难在于在selec

  • 问题内容: 我有2张桌子,一张用于会员,另一张用于他们的服务。这些是MySQL 5.6服务器上的InnoDB表。 会员表: 服务表: 我尝试达到以下结果: 因此,如果服务表中存在用户ID,则列服务将为true或false。 我尝试使用JOIN和子查询来完成此操作,但没有成功,因此我需要您的帮助;) 问题答案: 使用服务表,请尝试此查询

  • 我有一个活动选项卡的自动播放选项卡类current,这意味着当该选项卡活动时, 有一个名为current的类。现在我要向第一个子 添加不同的类 null null