我有两张地图
Map<String, String> filterMap
Map<String, Object> filterMapObj
我需要的是我想将Map<String, String>
转换为Map<String, Object>
。
我在这里使用代码
if (filterMap != null) {
for (Entry<String, String> entry : filterMap.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
Object objectVal = (Object)value;
filterMapObj.put(key, objectVal);
}
}
它工作正常,有没有其他方法可以做到这一点,而无需迭代地图中的所有条目。
答案 0 :(得分:42)
您可以使用putAll
:
filterMapObj.putAll(filterMap);
(见the Javadoc。)
编辑添加:我应该注意,上述方法或多或少等同于迭代地图的元素:它会使您的代码更清晰,但如果您不想要的原因迭代元素实际上是一个性能问题(例如,如果你的地图是巨大的),那么它不太可能帮助你。另一种可能性是写:
filterMapObj = Collections.<String, Object>unmodifiableMap(filterMap);
创建filterMap
的不可修改的“视图”。当然,这更具限制性,因为它不会让您独立修改filterMapObj
和filterMap
。 (filterMapObj
无法修改,对filterMap
的任何修改也会影响filterMapObj
。)
答案 1 :(得分:9)
您可以使用通配符运算符。
将filterMapObj
定义为Map<String, ? extends Object> filterMapObj
,您可以直接将filterMap
分配给它。您可以了解generics wildcard operator
答案 2 :(得分:4)
您可以简单地写
Map<String, Object> filterMapObj = new HashMap<>(filterMap);
答案 3 :(得分:1)
您可以使用putAll方法来解决问题。对象是所有对象的父类,因此您可以在不转换的情况下使用putAll。