温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-06-10 13:51:04 来源:亿速云 阅读:2888 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关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的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI