Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java将两个列表合并为HashMap_Java_List - Fatal编程技术网

java将两个列表合并为HashMap

java将两个列表合并为HashMap,java,list,Java,List,我有两个列表名为list cpuReport和list 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, memor

我有两个列表名为list cpuReport和list 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());
            }
以下内容应该有效:

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<>();
    cpuReport.addAll(memoryReport); // merge two lists
    Iterator itr_mergedList= cpuReport.iterator(); // get iterator for list
    while(itr_mergedList.hasNext())
    {
        HashMap m= (HashMap)itr_mergedList.next();
        Set s = m.entrySet(); // get no. of entries in above list 
        Iterator itr_entrySet= s.iterator(); // get iterator for above entry set
        while(itr_entrySet.hasNext())
        {
            Map.Entry en=(Map.Entry) itr_entrySet.next();  
            MergedMap.put((String)en.getKey(), en.getValue()); // put in merged map
        }
    }
    listOfBothMaps.add(MergedMap); // add map obj to list 
    return listOfBothMaps;
}

请共享您尝试的代码和所需的输出。首先,感谢您的支持。我面临一个异常,名为:org.springframework.util.LinkedCaseInsensitiveMap无法转换为java.util.HashMapI尝试了您建议的代码,但在lineHashMap m=HashMapitr\u mergedList.next中出现错误;无论如何,谢谢你的帮助。我得到了预期的结果。我尝试了下面的方法并获得了所需的输出。