List 数据分组求和

100 阅读1分钟

日常开发工作中我们可能经常会遇到这样的需求,针对集合中的数据,按照某一字段进行分组,其他的字段(数值类型)累加求和。具体怎么操作呢,下面来看一个例子: 实体类:DailyData

@Data
public class DailyData {

    /**
     * 用户名
     */
    private String username;

    /**
     * 输入数
     */
    private Integer inputCounts;

    /**
     * 输出数
     */
    private Integer outputCounts;
    
}

下面进行分组求和:

public static List<DailyData> groupByUsername(List<DailyData> dailyDataList) {

    return new ArrayList<>(dailyDataList.stream().collect(Collectors.toMap(DailyData::getUsername, val -> val, (o1, o2) -> {
        o1.setInputCounts(o1.getInputCounts() + o2.getInputCounts());
        o1.setOutputCounts(o1.getOutputCounts() + o2.getOutputCounts());
        return o1;
    })).values());

}