栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java按条件合并集合中的部分元素

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java按条件合并集合中的部分元素

需求:按照特定条件,将集合中的元素做分类合并。
举例:

[{item:"a",
  code:"code1",
  num:10,
  sum:20}
  ,
  {item:"a",
  code:"code2",
  num:5,
  sum:15}
 }
 ,
 {item:"b",
  code:"code3",
  num:10,
  sum:20}]

将item相同的元素的num值和sum值合并,则合并结果为:

[{item:"a",
  code:"code1",
  num:15,
  sum:35}
 ,
 {item:"b",
  code:"code3",
  num:10,
  sum:20}]

代码实现

@Data
public class Entity {
    private String item;
    private String code;
    private int num;
    private int sum;
}
private List merge(){
        Entity entity1 = new Entity("a", "code1", 10, 20);
        Entity entity2 = new Entity("a", "code2", 5, 15);
        Entity entity3 = new Entity("b", "code3", 10, 20);
        ArrayList entities = new ArrayList<>();
        entities.add(entity1);
        entities.add(entity2);
        entities.add(entity3);
        ArrayList entitiesMerge = new ArrayList<>(entities.stream().collect(Collectors.toMap(Entity::getItem, a -> a, (i1, i2) -> {
            i1.setNum(i1.getNum() + i2.getNum());
            i1.setSum(i1.getSum() + i2.getSum());
            return i1;
        })).values());
        return entitiesMerge;
    }

得到entitiesMerge 的值为

Entity{item='a', code='code1', num=15, sum=35}
Entity{item='b', code='code3', num=10, sum=20}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459923.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号