Cast HashMap<String, Integer> with HashMap<String, Double>



为什么在这种情况下不能直接使用

HashMap<String, Double> mapDouble = (HashMap<String, Integer>) mapInteger;

有比循环更简单的方法吗?

HashMap<String, Double> mapDouble;
for (Map.Entry<String,Integer> entry : mapInteger.entrySet()) {
    mapDouble.put(entry.getKey(), new Double(entry.getValue()) );
}

对不起,您需要一个循环!您必须遍历所有mapInteger以逐个转换值

无法强制转换hashmap。

entrySet()将提供更好的性能方法。

使用Map<String, Number>会更容易。

Map<String, Number> map = new HashMap<>();
for (int i = 0; i < 100; i++) {
    map.put(Integer.toString(i), i);
}
map.forEach((k, v) -> System.out.println(k + " -> " + v.doubleValue()));

相关内容

最新更新