我有两张 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 中的所有条目的情况下做到这一点。
最佳答案
您可以putAll
,而不是编写自己的循环调用put
,它做同样的事情:
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
。)
关于java - 将 Map<String,String> 转换为 Map<String,Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21037263/