比较两个或多个地图的数据

时间:2016-10-28 19:36:51

标签: java collections

我坚持以下要求,不知道如何处理它:

我的功能如下:

public void compareExcel(Map<Object,List<HashMap>>) compareMaps){}

此函数将地图作为输入参数。此映射将包含工作表名称与工作表值(列名称 - 列值)映射。

基本上函数输入参数如下:

<Excel1,(scenario:10)
        (timing: 20) 

Excel2,(scenario:30)
        (timing: 40) 

Excel3,(scenario:50)
        (timing: 60)
>

这里我的excel1有两列(场景和时间),值分别为10和20。

在结果中,我将需要比较:

地图&GT;

<scenario, <excel1,10>
           <excel2,30>
           <excel3,50>

timing, <excel1,20>
           <excel2,40>
           <excel3,60>    
>

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

Create/initialize the details of you output data-structure

LOOP (over the excelName:List pairs in you input)
   LOOP (over the List that is the value in the pair)
      //Each entry in the list is a map
      Get the key-name (e.g. "scenario")
      Get the value (e.g. "10")
      //You already know the out key (i.e the excelName)
      With the three known values, build/add to your output data-structure

答案 1 :(得分:0)

在移动设备上,我甚至无法检查语法,但是......

Map recopilation = new HashMap();
for(Object sheetName : compareMaps.keySet()) {
    Map sheet = compareMaps.get(sheetName);
    for (Object columnName : sheet.keySet()) {
        if (recopilation.get(columnName) == null) {
            recopilation.put(columnName, new HashMap());
        }
        ((Map) recopilation.get(columnName)).put(sheetName, sheet.get(columnName));
    }
}

这样的事情。如果它有效,你应该在那里抛出一些泛型,我主要不是为了节省一些打字。