stream流通过字段分组对其他字段累加

list.stream().collect(Collectors.toMap(Class::getParam, Function.identity(),
(a, b) -> {
a.setParam(a.getParam() + b.getParam());
       ....
return a;
}));
例子
Class {111,1,1,1}
Class {111,1,1,1}
Class {222,1,1,1}

 按第一个字段分组  后面值累加
 结果

  111:{111,2,2,2}

  222:{222,1,1,1}

如果要转成list则

list.stream()
        .collect(Collectors.toMap(Class::getParam, a -> a, (a,b)-> {
            a.setParam(a.getParam() + b.getParam());
            ....
            return a;
        })).values().stream().collect(Collectors.toList());
posted @ 2021-09-18 16:02  DarkerbeS  阅读(1753)  评论(1编辑  收藏  举报