Java 8:GroupingBy,结果为List

问题描述 投票:0回答:1

我们有以下内容:

public List<Balance> mapToBalancesWithSumAmounts(List<MonthlyBalancedBooking> entries) {
    return entries
      .stream()
      .collect(
        groupingBy(
          MonthlyBalancedBooking::getValidFor,
          summingDouble(MonthlyBalancedBooking::getAmount)
        )
      )
      .entrySet()
      .stream()
      .map(localDateDoubleEntry -> new Balance(localDateDoubleEntry.getValue(), localDateDoubleEntry.getKey()))
      .collect(toList());
  }

是否有可能避免代码中的第二个stream()路径,因此在我们的案例中,groupingBy()的结果应该是一个列表。我们需要传递map()函数进行收集或分组的可能性在Java 8中是否可行?

java-8 java-stream collectors groupingby
1个回答
0
投票

尝试一下

entries.stream()
  .collect( groupingBy(
      MonthlyBalancedBooking::getValidFor,
      Collectors.mapping(summingDouble(MonthlyBalancedBooking::getAmount),toList())
    )
  );
© www.soinside.com 2019 - 2024. All rights reserved.