У меня есть два списка с именами List<Map<String, Object>> cpuReport
и List<Map<String, Object>> memoryReport
, я хочу поместить эти два списка в одну HashMap, где cpureport
и memoryReport
могут иметь одинаковые или разные ключи в HashMap.
memoryReport : [{robot=GEMPSAPPPROD02, memory_min=3.17, memory_max=90.79, memory_avg=31.857100643332412, memory_50=34006, memory_60=5700, memory_65=2480, memory_100=2450}, {robot=MUMGEMIDADBPROD05, memory_min=6.07, memory_max=8.75, memory_avg=8.184755153233644, memory_50=44635, memory_60=0, memory_65=0, memory_100=0}]
cpuReport : [{robot=Hema, cpu_min=1.12, cpu_max=1.12, cpu_avg=1.12, cpu_50=0, cpu_60=0, cpu_65=0, cpu_100=0}, GEMPSAPPPROD02={robot=GEMPSAPPPROD02, cpu_min=0.03, cpu_max=35.88, cpu_avg=2.6957142857143097, cpu_50=44636, cpu_60=0, cpu_65=0, cpu_100=0}]
mergedMap: GEMPSAPPPROD02={robot=GEMPSAPPPROD02, memory_min=3.17, memory_max=90.79, memory_avg=31.857100643332412, memory_50=34006, memory_60=5700, memory_65=2480, memory_100=2450,cpu_min=0.03, cpu_max=35.88, cpu_avg=2.6957142857143097, cpu_50=44636, cpu_60=0, cpu_65=0, cpu_100=0},MUMGEMIDADBPROD05={robot=MUMGEMIDADBPROD05, memory_min=6.07, memory_max=8.75, memory_avg=8.184755153233644, memory_50=44635, memory_60=0, memory_65=0, memory_100=0},Hema={robot=Hema, cpu_min=1.12, cpu_max=1.12, cpu_avg=1.12, cpu_50=0, cpu_60=0, cpu_65=0, cpu_100=0}
public List<Map<String, Object>> getMergedReport(List<Map<String, Object>> cpuReport,
List<Map<String, Object>> memoryReport) {
Map<String, Object> MergedMap = new HashMap<String, Object>();
List<Map<String, Object>> listOfBothMaps = new ArrayList<>();
String robotFromcpu = null;
try {
for (Map<String, Object> cpuMap : cpuReport) {
robotFromcpu = (String) cpuMap.get("robot");
MergedMap.put(robotFromcpu, cpuMap);
}
for (Map<String, Object> memoryMap : memoryReport) {
String robotFromMemory = (String) memoryMap.get("robot");
Map<String, Object> map = (Map<String, Object>) MergedMap.get(robotFromMemory);
if(map != null){
map.putAll(memoryMap);
}
else{
MergedMap.put(robotFromMemory, memoryMap);
}
LOGGER.info("The merged map is : " + map);
listOfBothMaps.add(map);
}
} catch (Exception e) {
LOGGER.info("The exception is : " + e.getMessage());
}
return listOfBothMaps;
}
Рабочий код:
Map<String, Object> mergedMap = new HashMap<String, Object>();
List<Map<String, Object>> listOfMergedMaps = new ArrayList<>();
String robotFromcpu = null;
for (Map<String, Object> cpuMap : cpuReport) {
robotFromcpu = (String) cpuMap.get("robot");
mergedMap.put(robotFromcpu, cpuMap);
}
for (Map<String, Object> memoryMap : memoryReport) {
String robotFromMemory = (String) memoryMap.get("robot");
Map<String, Object> map = (Map<String, Object>) mergedMap.get(robotFromMemory);
if(map != null){
map.putAll(memoryMap);
LOGGER.info("The merged map is : " + map);
}else{
mergedMap.put(robotFromMemory, memoryMap);
}
}
for(Map.Entry<String, Object> map : mergedMap.entrySet()) {
listOfMergedMaps.add((Map<String, Object>)map.getValue());
}