其他分享
首页 > 其他分享> > <List嵌套Map>让重复的key自增,使得key唯一

<List嵌套Map>让重复的key自增,使得key唯一

作者:互联网

直接上干货!!!!!!

public static void main(String[] args) {
    // 构建一个测试list 里面存放了一些map 这些map有相同key 也有不相同的key key的数量也不相等
    // 期望 将list里的每个map中的键值对放到一个大的map里 如果key相同 key的名称自增加1
    List<Map<String,Object>> list = buildTestList();
    // 定义一个大的map 用来存放这些键值对
    Map<String, Object> bigMap = new HashMap<>();
    // 定义一个map 用来计数 用来统计相同的key出现的次数
    Map<String,Integer> countMap = new HashMap<>();
    // 开始遍历列表
    for (Map<String,Object> map : list){
        // 遍历map
        for (Map.Entry<String,Object> entry : map.entrySet()){
            String key = entry.getKey(); // (String) object3
            Object value = entry.getValue(); // reportset.get(object3)
            String newKey = "";
            // 将该 key value放入到 大的map中
            // 关键点 先去countMap中查下 有没有这个key 没有这个key就放到countMap中并将值设为1 如果有这个key 就将值加1
            if (countMap.containsKey(key)){
                Integer count = countMap.get(key)+1;
                countMap.put(key,count);
                newKey = key+count;
            }else {
                countMap.put(key,1);
                newKey = key+1;
            }
            bigMap.put(newKey,value);
        }
    }
    for (Map.Entry<String,Object> entry : bigMap.entrySet()){
        System.out.println(entry.getKey() + " : " + entry.getValue());
    }

}

public static List<Map<String,Object>> buildTestList(){
    List<Map<String,Object>> list = new ArrayList<>();
    Map<String,Object> map1 = new HashMap<>();
    map1.put("a","1");
    map1.put("b","2");
    Map<String,Object> map2 = new HashMap<>();
    map2.put("a","1");
    map2.put("b","2");
    map2.put("c","3");
    Map<String,Object> map3 = new HashMap<>();
    map3.put("a","1");
    map3.put("b","2");
    Map<String,Object> map4 = new HashMap<>();
    map4.put("a","1");
    map4.put("b","2");
    map4.put("c","3");
    map4.put("d","4");
    list.add(map1);list.add(map2);list.add(map3);list.add(map4);
    return list;
}

标签:map,自增,Map,重复,list,countMap,key,put
来源: https://www.cnblogs.com/jingyu-zhang/p/14412941.html