List<Map<String,Object>>数据格式重新组合成
Map<String, List<Map<String, Object>>>
方法如下:
举例:
//创建数据
List<Map<String,Object>> data=new ArrayList<Map<String,Object>>();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("QUALITY_CODE","20200107");
map1.put("AUTH_NAME","证书3");
map1.put("EXPRESSIONDESC","4和3都满足");
map1.put("TYPEEXPRESSION","([CERTNO4]==1&&[CERTNO3]==1)");
map1.put("AUTH_CODE","CERTNO2");
map1.put("AUTHSCENE","QUALITY");
map1.put("AUTHTYPE_CODE","CERTN");
map1.put("DBID","44");
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("QUALITY_CODE","20200107");
map2.put("AUTH_NAME","证书4");
map2.put("IS_FORCED_CONTROL","1");
map2.put("EXPRESSIONDESC","4证书满足");
map2.put("TYPEEXPRESSION","([CERTNO4]==1)");
map2.put("AUTH_CODE","CERTNO3");
map2.put("AUTHSCENE","QUALITY");
map2.put("AUTHTYPE_CODE","CERTN");
map2.put("DBID","44");
Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("QUALITY_CODE","20200107");
map3.put("AUTH_NAME","申请人类别");
map3.put("IS_FORCED_CONTROL","1");
map3.put("EXPRESSIONDESC","申请人类别:内部用户");
map3.put("TYPEEXPRESSION","([UTY]=={1000})");
map3.put("AUTH_CODE","UTY");
map3.put("AUTHSCENE","QUALITY");
map3.put("AUTHTYPE_CODE","UTY");
map3.put("DBID","6");
Map<String, Object> map4 = new HashMap<String, Object>();
map4.put("QUALITY_CODE","20200107");
map4.put("AUTH_NAME","专业年限");
map3.put("IS_FORCED_CONTROL","0");
map4.put("EXPRESSIONDESC","专业年限达到三年以上(含3年)");
map4.put("TYPEEXPRESSION","([MWY]>={3})");
map4.put("AUTH_CODE","MWY");
map4.put("AUTHSCENE","QUALITY");
map4.put("AUTHTYPE_CODE","MWY");
map4.put("DBID","4");
JSONObject jsonObject1 = new JSONObject(map1);
JSONObject jsonObject2 = new JSONObject(map2);
JSONObject jsonObject3 = new JSONObject(map3);
JSONObject jsonObject4 = new JSONObject(map4);
data.add(jsonObject1);
data.add(jsonObject2);
data.add(jsonObject3);
data.add(jsonObject4);
System.out.println("data:"+data);
System.out.println("========================");
//组合成新的数据格式
Map<String, List<Map<String, Object>>> dataMap = new HashMap<String, List<Map<String,Object>>>();
//遍历组合之前的数据
for (Map<String, Object> map : data) {
//提取数据中的某一属性值当作key(判断)map.containsKey,依据此方法来获取键值对,如果没有找到返回false,找到了就返回ture
if (map.containsKey("AUTHTYPE_CODE")) {
List<Map<String, Object>> authTypeMap = new ArrayList<Map<String,Object>>();
//List<Map<String, Object>>取key
String typeStr =(String) map.get("AUTHTYPE_CODE");
if (dataMap.containsKey(typeStr)) {
authTypeMap=dataMap.get(typeStr);
}
authTypeMap.add(map);
dataMap.put(typeStr, authTypeMap);
}
}
System.err.println("dataMap:"+dataMap);
最后的结果如下所示:
留记!!