sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

合并map中key相同的value

这几天工作中遇到的问题,后台返回的是一个List<Map<Object,Object>>数组,其中每个map中只有一组值,但是这些map中有key相同的,需要将key相同的value合并成一个list

具体要求如下

List<Map> list = new ArrayList<>();
        Map map0 = new HashMap();
        map0.put(1, 1);
        list.add(map0);
        Map map1 = new HashMap();
        map1.put(3, 4);
        list.add(map1);
        Map map2 = new HashMap();
        map2.put(1, 2);
        list.add(map2);
        Map map3 = new HashMap();
        map3.put(1, 3);
        list.add(map3);
        Map map4 = new HashMap();
        map4.put(2, 2);
        list.add(map4);
        Map map5 = new HashMap();
        map5.put(2, 1);
        list.add(map5);
        Map map6 = new HashMap();
        map6.put(3, 1);
        list.add(map6);

        // 要求将上面的List<Map>中的map中key相同的value合并
        // 最终得到下面的结果Map<Object,List>,其中几个map分别为
        // 1->[1,2,3]
        // 2->[2,1]
        // 3->[4,3]

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
 
public class CombineVale {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<Map> list = new ArrayList<>();
		Map map0 = new HashMap();
		map0.put(1, 1);
		list.add(map0);
		Map map1 = new HashMap();
		map1.put(3, 4);
		list.add(map1);
		Map map2 = new HashMap();
		map2.put(1, 2);
		list.add(map2);
		Map map3 = new HashMap();
		map3.put(1, 3);
		list.add(map3);
		Map map4 = new HashMap();
		map4.put(2, 2);
		list.add(map4);
		Map map5 = new HashMap();
		map5.put(2, 1);
		list.add(map5);
		Map map6 = new HashMap();
		map6.put(3, 1);
		list.add(map6);
 
		// 要求将上面的List<Map>中的map中key相同的value合并
		// 最终得到下面的结果List<Map<Object,List>>,其中三个map分别为
		// 1->[1,2,3]
		// 2->[2,1]
		// 3->[4,3]
		
		Map m = mapCombine(list);
		System.out.println(m);
 
	}
 
	public static Map mapCombine(List<Map> list) {
		Map<Object, List> map = new HashMap<>();
		for (Map m : list) {
			Iterator<Object> it = m.keySet().iterator();
			while (it.hasNext()) {
				Object key = it.next();
				if (!map.containsKey(key)) {
					List newList = new ArrayList<>();
					newList.add(m.get(key));
					map.put(key, newList);
				} else {
					map.get(key).add(m.get(key));
				}
			}
		}
		return map;
	}
 
}

输出结果如下

{1=[1, 2, 3], 2=[2, 1], 3=[4, 1]}

https://blog.csdn.net/qq_24877569/article/details/52187388
posted on   sunny123456  阅读(680)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示