java8中.distinct()和.sum()的组合

时间:2018-09-07 10:33:02

标签: java java-stream

我有一个对象:

LocalDate localDate;
int amount;

我有一个像这样的对象的列表:

{2018-01-01, 5}
{2018-01-01, 10}
{2018-01-02, 15}

现在我要达到的目标是我要分析同一天的金额。 预期结果将在不重复的情况下列出金额的总和

{2018-01-01, 15}
{2018-01-02, 15}

好像我缺少某种流方法来做到这一点...

1 个答案:

答案 0 :(得分:6)

Collectors.groupingBy与下游收集器Collectors.summingInt

一起使用
yourObjects.stream()
           .collect(Collectors.groupingBy(
                   YourObject::getLocalDate,
                   Collectors.summingInt(YourObject::getAmount)
))