0

所以我有一个方法,setContainerSummaryMap,它接受一个Map<String, Map<String, Integer>>.

我还有一个HashMap<Long, HashMap<String, Integer>>, called contIdDestQuanMapSoFar, 我将把它转换成一个HashMap<String, HashMap<String, Integer>>, HashMap<Long, String>named contIdToScanIdMap, 将键相互映射。此方法如下:

public HashMap<String, HashMap<String, Integer>> convertContSummaryMap() {
    HashMap<String, HashMap<String, Integer>> toRet = new HashMap<String, HashMap<String, Integer>>();
    for (Entry<Long, HashMap<String, Integer>> entry : contIdDestQuanMapSoFar.entrySet()) {
        toRet.put(contIdToScanIdMap.get(entry.getKey()), entry.getValue());
    }
    return toRet;
}

问题是,当我调用方法时setContainerSummaryMap(currentPlan.convertContSummaryMap()),我得到一个错误,说它不适用于 arguments HashMap<String, HashMap<String, Integer>>。我将如何修改数据类型以使其正常工作?谢谢。

4

2 回答 2

2

您可以重新定义您的setContainerSummaryMap方法:

public void setContainerSummaryMap(Map<String, ? extends Map<String, Integer>> map)

或者,正如 Louis 已经建议的那样,将您的返回类型更改convertContSummaryMap为匹配:

public HashMap<String, Map<String, Integer>> convertContSummaryMap()
于 2013-07-15T22:05:52.193 回答
1

要完成这项工作,类型toRet必须是HashMap<String, Map<String, Integer>>. 正如@SLaks 所说, aHashMap<String, Map>与 a 不同HashMap<String, HashMap>

当然,Map你实际放入的 s 仍然是HashMaps。

于 2013-07-15T21:58:08.747 回答