2 回答

TA贡献1797条经验 获得超6个赞
似乎您需要根据三件事进行分组:Year,Month和Name,因此这可能如下所示:
Collection<Target> merged = yourListOfTargets
.stream()
.collect(Collectors.toMap(
t -> List.of(t.getYear(), t.getMonth(), t.getName()),
Function.identity(),
(left, right) -> {
left.setTarget(left.getTarget() + right.getTarget());
left.setAchieved(left.getAchieved() + right.getAchieved());
return left;
}))
.values();
正如 Federico 在评论中提到的,这将改变您在初始List. 您可能会接受它,但如果不是,则需要替换Function.identity()为一个复制功能,该功能Target将从现有功能中创建一个新功能。
添加回答
举报