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

Java 比较两个或多个地图的数据,java,collections,Java,Collections,我坚持以下要求,不确定如何继续: 我有一个类似于: public void compareExcel(Map<Object,List<HashMap>>) compareMaps){} public void compareExcel(Map)compareMaps){ 此函数将地图作为输入参数。此映射将包含图纸名称与图纸值(列名-列值)的映射 基本上,功能输入参数如下: <Excel1,(scenario:10) (timing: 20)

我坚持以下要求,不确定如何继续:

我有一个类似于:

public void compareExcel(Map<Object,List<HashMap>>) compareMaps){}
public void compareExcel(Map)compareMaps){
此函数将地图作为输入参数。此映射将包含图纸名称与图纸值(列名-列值)的映射

基本上,功能输入参数如下:

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

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

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

这里我的excel1有两列(scenario和timings),值分别为10和20

因此,我需要进行如下比较:

地图>



任何帮助都将不胜感激。

在手机上,所以我甚至无法检查语法,但是

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
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));
    }
}

差不多吧。如果它能工作,你真的应该在那里加入一些泛型,我不想保存一些输入。

你的代码,或者不管它是什么,都是非常模糊的。试着用语言来解释你的问题。这不是比较,这是重新编译。你自己试过什么吗?
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));
    }
}