我有两张 map
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);
}
}
它工作正常,是否有其他方法可以执行此操作而无需遍历Map中的所有条目。
最佳答案
不用编写自己的调用put
的循环,而是可以putAll
,它执行相同的操作:
filterMapObj.putAll(filterMap);
(请参阅the Javadoc。)正如Asanka Siriwardena在他/她的答案中指出的那样,如果您的计划是在创建
filterMapObj
后立即填充它,则可以使用自动执行此操作的构造函数:filterMapObj = new HashMap<>(filterMap);
但需要明确的是,以上内容几乎等同于遍历 map 元素:这将使您的代码更整洁,但是如果您不想遍历元素的原因实际上是性能方面的考虑(例如, map 是巨大的),那么它不可能帮助您。另一种可能性是编写:filterMapObj = Collections.<String, Object>unmodifiableMap(filterMap);
这将创建filterMap
的不可修改的“ View ”。当然,这更具限制性,因为它不允许您单独修改filterMapObj
和filterMap
。 (filterMapObj
不能修改,对filterMap
的任何修改也会影响filterMapObj
。)