java - 我怎样才能将这段代码转换为Java 8

标签 java java-8

我有这个 Java 6 代码,我想将其转换为 Java 8。

BigDecimal sumContributionPercentage = new BigDecimal(0);                   
if (hasElements(mandateDetails)) {
  for (InstrumentMandateDetail mandate: mandateDetails) {
    if(!(VERFI_STATUS_CLOSED.equals(mandate.getMandateVerificationStatusType().getCode()) ||
         VERFI_STATUS_REJECTED.equals(mandate.getMandateVerificationStatusType().getCode()))) {
      sumContributionPercentage = sumContributionPercentage.add(mandate.getContributionPercentage());
    }       
  }
}

最佳答案

假设 getContributionPercentage() 返回一个 BigDecimal,您可以使用以下内容:

BigDecimal sumContributionPercentage = 
    mandateDetails.stream()
                  .filter(m -> !(VERFI_STATUS_CLOSED.equals(m.getMandateVerificationStatusType().getCode()) || 
                                 VERFI_STATUS_REJECTED.equals(m.getMandateVerificationStatusType().getCode())))
                  .map(InstrumentMandateDetail::getContributionPercentage)
                  .reduce(BigDecimal.ZERO, BigDecimal::add);

关于java - 我怎样才能将这段代码转换为Java 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31238548/

相关文章:

java - JVM 什么时候决定重用旧的 lambda?

java - 使用不同的 JPanel 替换 JPanel

java - 通过统计灰度值 (Java) 自动裁剪扫描图像的黑色边框

java - 字节流和字符流

Java 8 : grouping a collection by a field and flatten and join a collection as mapped value using stream?

Java 将字符串数组映射到整数数组

java - 为什么 parallelStream 不使用整个可用的并行性?

java - 二维数组的流式操作

java - 为什么 IntelliJ IDEA 看不到 HttpClients?

java - 使用 Java 程序连接到 Java DB