如何将这段代码转换为Java 8

Vis*_*was 0 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());
    }       
  }
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

假设getContributionPercentage()返回a 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);
Run Code Online (Sandbox Code Playgroud)