为了账号安全,请及时绑定邮箱和手机立即绑定

选项和映射操作

选项和映射操作

阿波罗的战车 2022-12-15 14:52:05
我有以下案例,我似乎不明白我应该如何正确处理它。假设以下域结构。我有一个存储联系人对象列表的客户对象。现在我想做以下事情:1) 尝试检索所述客户(可选)。2) 如果存在,则使用它来检索联系人对象。我当时的代码如下所示:Contact contact = customer.map(cust -> getContacts().stream()                                                     .findFirst()                                                     .orElse(null))                           .orElse(null);请注意,客户对象已初始化为 Optional。现在我的问题如下:我想去掉这些orElse语句以简化代码,并根据所讨论的对象是否等于另一个对象简单地返回 true 或 false。到目前为止,我已经尝试过了,我认为这可以完成这项工作。return customer.map(cust -> getContacts()                             .stream()                             .findFirst()                             .map(custContact -> custContact.map(contact::equals).orElse(false))                             .orElse(false);我的主要问题是,这可以进一步简化吗?我想我在那些映射操作中遗漏了一些东西,但我不太确定。我的另一个解决方案是这个:return customer.map(cust -> getContacts()                            .stream()                            .findFirst()                            .map(contact::equals).orElse(false))                            .orElse(false);
查看完整描述

1 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

您可以Optional.filter()使用Stream.anyMatch()Optional.isPresent()

customer.filter(cust -> getContacts().stream().anyMatch(contact::equals)).isPresent();


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 58 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号