jdk1.8 操作List 多个map 具有相同的key 进行分组合并重组数据

网友投稿 417 2022-09-05

jdk1.8 操作List 多个map 具有相同的key 进行分组合并重组数据

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

数据格式

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 的数据类型,数据类型不一样,分组出的结果不一样。

组装成的数据格式如下:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:DDD模型领域WF到领域层(十五)
下一篇:为何你的营销总是自娱自乐?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~