map.foreach java8中的条件总和

Jig*_*aik 2 java java-8

public Double getUnitsBefore(Date recordDate) {
    double eligibleUnits = 0;
    ageBucket.forEach((dateStr, units) -> {
        try {
            Date date = DFT.parse(dateStr);
            if (date.before(recordDate)) {
                //TODO These are eligible units for dividend.
                eligibleUnits = eligibleUnits + units.doubleValue();    //TODO 
            }

        } catch(ParseException e) {
            e.printStackTrace();
        }
    });

    return eligibleUnits;
}
Run Code Online (Sandbox Code Playgroud)
  • 如您所知,行在eligibleUnits = eligibleUnits + units.doubleValue();Java 8 中无法编译。我如何实现这一目标?我只需要在日期在记录日期之前求和。

shm*_*sel 5

改用流:

return ageBucket.entrySet()
        .stream()
        .filter(e -> DFT.parse(e.getKey()).before(recordDate))
        .mapToDouble(Map.Entry::getValue)
        .sum();
Run Code Online (Sandbox Code Playgroud)