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