繁体   English   中英

地图/ HashMap投射?

[英]Map/HashMap Casting?

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

我还有一个名为contIdDestQuanMapSoFarHashMap<Long, HashMap<String, Integer>> ,我打算将其转换为HashMap<String, HashMap<String, Integer>>和一个HashMap<Long, String> ,名为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()) ,出现错误,说它不适用于参数HashMap<String, HashMap<String, Integer>> 我将如何修改数据类型以使其正常工作? 谢谢。

您可以重新定义setContainerSummaryMap方法:

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

或者,如Louis所建议的,将convertContSummaryMap的返回类型更改为匹配:

public HashMap<String, Map<String, Integer>> convertContSummaryMap()

要使此工作有效, toRet的类型必须为HashMap<String, Map<String, Integer>> 如@SLaks所述, HashMap<String, Map>HashMap<String, HashMap>

当然,您实际放入的Map仍将是HashMap

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM