java8合并相同map_jdk1.8 操作List<Map> 多个map 具有相同的key 进行分组合并重组数据...

一:我们有这么一列数据:

8e25532a4a54717811110a46e887ae03.png

数据格式

m1的数据格式如下:  margeKey 是 要按照 那个key来进行分组,key 名字

[{active_user=2, company_id=13}, {active_user=1, company_id=126}, {company_id=13, material_num=13}, {company_id=126, material_num=2}, {company_id=13, learning_duration=4315.0}, {company_id=126, learning_duration=5.0}, {company_id=13, daily_answer_times=2}, {company_id=126, daily_answer_times=2}, {company_id=126, exam_times=1}]

使用如下代码,组装成:

代码如下:

public static List> merge(List> m1,String mergeKey){

Set set = new HashSet<>();

System.out.println("m1的数据格式是:"+m1);

return m1.stream()

.filter(map->map.get(mergeKey)!=null)

.collect(Collectors.groupingBy(o->{

//暂存所有key

set.addAll(o.keySet());

//按mergeKey分组

return o.get(mergeKey).toString();

}))

.entrySet().stream().map(o->{

//合并

Map map = o.getValue().stream().flatMap(m->{

return m.entrySet().stream();

}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a,b)->b));

//为没有的key赋值0

set.stream().forEach(k->{

if(!map.containsKey(k)) map.put(k, 0);

});

return map;

}).collect(Collectors.toList());

}

// 一些个人碰坑总结:

// 通过分组的时候,一定的注意 分组的key 的value 的数据类型,数据类型不一样,分组出的结果不一样。

组装成的数据格式如下:

a4191f74af531c54b1f9de9054a70a31.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值