<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