返回顶部
首页 > 资讯 > 精选 >java8中Stream list to Map key重复value合并到Collectio的示例分析
  • 296
分享到

java8中Stream list to Map key重复value合并到Collectio的示例分析

2023-06-15 10:06:24 296人浏览 安东尼
摘要

这篇文章给大家分享的是有关java8中Stream list to Map key重复value合并到Collectio的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。java8 Stream list

这篇文章给大家分享的是有关java8中Stream list to Map key重复value合并到Collectio的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

java8 Stream list to Map key 重复 value合并到Collectio

关于把list转换成key value的map有很多博客上都有实现,这里是一个把value放入到集合中去

List<String> list = Lists.newArrayList("1", "2", "3", "1");        Map<String, List<String>> map = list.stream().collect(Collectors.toMap(key -> key,                value -> Lists.newArrayList(value),                (List<String> newValueList, List<String> oldValueList) -> {                    oldValueList.addAll(newValueList);                    return oldValueList;                }));        System.out.println(JSON.tojsONString(map));

类似的,你的list泛型可以是一个bean,取bean的属性当key或者value,转换成一个集合

结果:

{"1":["1","1"],"2":["2"],"3":["3"]}

list中Map合并重复数据(map中key相等的value值相加)

public static void main(String[] args) {List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Map<String, Object> map1 = new HashMap<String, Object>();map1.put("id", 1);map1.put("value", 2);list.add(map1);Map<String, Object> map2 = new HashMap<String, Object>();map2.put("id", 1);map2.put("value", 5);list.add(map2);Map<String, Object> map3 = new HashMap<String, Object>();map3.put("id", 2);map3.put("value", 5);list.add(map3);Map<String, Object> map4 = new HashMap<String, Object>();map4.put("id", 2);map4.put("value", 4);list.add(map4);Map<String, Object> map5 = new HashMap<String, Object>();map5.put("id", 1);map5.put("value", 4);list.add(map5);//id相等value相加(合并id相同数据)System.out.println("原始数据:"+list);//方法一Map<String, Object> result1 = new HashMap<String, Object>();for(Map<String, Object> map : list){String id = map.get("id").toString();Long value = Long.parseLong(map.get("value").toString());if(result1.containsKey(id)){Long temp = Long.parseLong(result1.get(id).toString());value += temp;}result1.put(id, value);}System.out.println("合并后的数据:"+result1);//方法二Map<String, Map<String, Object>> result2 = new HashMap<String, Map<String,Object>>();for(Map<String, Object> map : list){String id = map.get("id").toString();Long value = Long.parseLong(map.get("value").toString());if(result2.containsKey(id)){Long temp = Long.parseLong(result2.get(id).get("value").toString());value += temp;result2.get(id).put("value", value);continue;}result2.put(id, map);}System.out.println("合并后的数据2:"+result2); }

感谢各位的阅读!关于“java8中Stream list to Map key重复value合并到Collectio的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: java8中Stream list to Map key重复value合并到Collectio的示例分析

本文链接: https://lsjlt.com/news/279880.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作