对Stream API结合Lambda 表达式学习及总结(2)

续对Stream API结合Lambda 表达式学习及总结(1)

eg3:功能介绍:

这行代码是在使用 Java 的 Stream API 来处理一个名为 loanOrderList 的集合(很可能是贷款订单的列表)。该代码的目的是检查集合中是否至少有一个元素(即贷款订单)满足特定条件。这里的特定条件包括两个主要的判断逻辑:

loanOrderList.stream().anyMatch(o -> Objects.equals(MiddleConstant.LoanOrderRiskSts.CREDIT_PASS.getValue(), o.getRiskSts()) && revolvingCreditService.getByLoanId(o.getId())

详细解析:

loanOrderList.stream().anyMatch(...)

loanOrderList 是一个包含贷款订单的列表。
stream() 方法将列表转换成流,以便进行后续的流操作。
anyMatch 是一个终端操作,它接受一个谓词(即一个返回布尔值的函数)作为参数。该方法会检查流中的元素是否有至少一个满足提供的谓词。如果找到这样的元素,anyMatch 立即返回 true;如果没有找到或者流是空的,它返回 false。

o -> Objects.equals(MiddleConstant.LoanOrderRiskSts.CREDIT_PASS.getValue(), o.getRiskSts()) && revolvingCreditService.getByLoanId(o.getId())

这是一个 Lambda 表达式,用于定义 anyMatch 方法需要的谓词。

Objects.equals(MiddleConstant.LoanOrderRiskSts.CREDIT_PASS.getValue(), o.getRiskSts())

使用 Objects.equals 方法比较两个值是否相等。这里比较的是来自 MiddleConstant.LoanOrderRiskSts.CREDIT_PASS.getValue() 的值与每个贷款订单对象 o 的风险状态 (getRiskSts())。
MiddleConstant.LoanOrderRiskSts.CREDIT_PASS 是一个枚举

revolvingCreditService.getByLoanId(o.getId())

调用 revolvingCreditService.getByLoanId 方法,传入贷款订单的 ID (o.getId())。

eg4:功能介绍:

这段代码使用了Java的Stream API来处理一个名为accountStageList的集合,先按期数倒序排序,再按顺序取第一个已还款的账单

Optional<AccountStageEntity> first = accountStageList.stream()
                .sorted((o1, o2) -> o2.getTheStageNum() - o1.getTheStageNum())
                .filter(o -> AccountConstant.AccountRepayStsEnum.getByCode(o.getSts()).isSettledSts())
                .findFirst();

详细解析:

accountStageList.stream()

accountStageList可能是一个包含AccountStageEntity对象的列表。
stream()方法将列表转换成流,使其可以进行一系列的流操作。

.sorted((o1, o2) -> o2.getTheStageNum() - o1.getTheStageNum())

这里使用sorted方法对流中的元素进行排序。
排序逻辑是比较两个AccountStageEntity对象的theStageNum属性。通过(o1, o2) -> o2.getTheStageNum() - o1.getTheStageNum()实现,这是一个降序排序,因为对于每对元素o1和o2,如果o2的阶段号大于o1的,结果为正数,这会将o2排在o1前面。

.filter(o -> AccountConstant.AccountRepayStsEnum.getByCode(o.getSts()).isSettledSts())

filter方法用于筛选流中的元素。它接受一个返回布尔值的函数(谓词),只保留使该函数返回true的元素。
这里的谓词检查每个AccountStageEntity对象的状态(sts),并通过AccountConstant.AccountRepayStsEnum.getByCode(o.getSts()).isSettledSts()来判断这个状态是否是已结清状态。
AccountConstant.AccountRepayStsEnum.getByCode方法根据状态代码获取相应的枚举实例,isSettledSts()方法则检查该状态是否表示已结清。

.findFirst()

findFirst是一个终端操作,它返回流中的第一个元素作为一个Optional对象。
使用Optional是为了安全地处理可能的空值情况,即如果流为空(没有元素满足排序和过滤条件),findFirst会返回一个空的Optional,避免NullPointerException。

未完待续。。。。

  • 22
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值