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