java 读取一组数_java – 如何从一组选项中获取数据?

Java 8

List expiredGuarantees = getProducts().stream()

.map(Product::getGuarantee)

.filter(Optional::isPresent)

.map(Optional::get)

.filter(not(Guarantee::hasExpired))

.collect(toList());

Java 9

Java9有Optional :: stream.因此,您可以使用单个flatMap替换过滤和映射:

List expiredGuarantees = getProducts().stream()

.map(Product::getGuarantee)

.flatMap(Optional::stream)

.filter(not(Guarantee::hasExpired))

.collect(toList());

注意

Java 8没有Predicates.not方法.它仅包含在第11版以来.

通过在项目中添加以下方法,您将能够将其与上述解决方案一起使用.

public static Predicate not(Predicate predicate) {

return predicate.negate();

}

更新

虽然这不是CodeReview社区,但以下是您的代码的一些注意事项:

>通过将两个管道组合成一个单独的代码将更清晰(在这种特殊情况下).

>在可能的情况下,首选基于lambda的方法引用

>为变量指定适当的名称,这样您就可以更轻松地维护代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值