一、在两个list中,具有相同字段的对象,进行字段求和。
例如:有医院列表1(浑南区:4家,铁西区:2家)、药店列表2(浑南区:1家,大东区:3家),现在要统计每个区域对应的定点数量。最终要统计的结果为:浑南区:5家、铁西区:2家、大东区:3家。
private List<BarDO> addList(List<BarDO> failMedPie, List<BarDO> failPhacPie) {
List<BarDO> pieFailList = new ArrayList<>();
if (!failMedPie.isEmpty()) {
//将相同key对应的值相加
Map<String, Integer> sumMap = new HashMap<>();
for (BarDO item : failMedPie) {
sumMap.put(item.getType(), item.getValue());
}
for (BarDO item : failPhacPie) {
if (sumMap.containsKey(item.getType())) {
sumMap.put(item.getType(), sumMap.get(item.getType()) + item.getValue());
} else {
//key不同的,添加到sumMap。
sumMap.put(item.getType(), item.getValue());
}
}
//Map转对象
pieFailList = sumMap.entrySet().stream()
.flatMap(entry -> Stream.of(new BarDO(entry.getKey(), entry.getValue())))
.collect(Collectors.toList());
}
return pieFailList;
}
二、Object、JSONObject、Map、String相互转换
1、将JSONObject对象转成String字符串
public static String jsonObjectToString(JSONObject jsonObject) {
return jsonObject.toJSONString();
}
2、java对象转换为String类型的json字符串
public static String objectToJson(Object obj) {
return JSONObject.toJSONString(obj);
}
3、json字符串转换为java对象
public static Object jsonToObject(String jsonStr) {
return JSONObject.parseObject(jsonStr, Object.class);
}
4、json字符串转换为JSONObject对象
public static JSONObject jsonToJSONObject(String jsonObj) {
return JSONObject.parseObject(jsonObj);
}
5、将java对象转换为JSONObject对象
public static JSONObject objectToJSONObject(Object obj) {
return JSONObject.parseObject(JSONObject.toJSONString(obj));
}
6、Map转java对象
List<BarDO> pieFailList = sumMap.entrySet().stream()
.flatMap(entry -> Stream.of(new BarDO(entry.getKey(), entry.getValue())))
.collect(Collectors.toList());