[英]Converting Map<String,String> to Map<String,Object>
我有两张地图
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);
(请参阅Javadoc 。)
正如 Asanka Siriwardena 在他/她的回答中指出的那样,如果您的计划是在创建filterMapObj
后立即填充它,那么您可以使用自动执行此操作的构造函数:
filterMapObj = new HashMap<>(filterMap);
但要清楚的是,以上内容或多或少相当于迭代地图的元素:它会使您的代码更清晰,但是如果您不想迭代元素的原因实际上是一个性能问题(例如,如果您的地图是巨大的),那么它不太可能帮助你。 另一种可能是写:
filterMapObj = Collections.<String, Object>unmodifiableMap(filterMap);
这创建了filterMap
的不可修改的“视图”。 当然,这更具限制性,因为它不会让您独立修改filterMapObj
和filterMap
。 ( filterMapObj
不能修改,对filterMap
任何修改也会影响filterMapObj
。)
您可以为此使用通配符运算符。 将filterMapObj
定义为Map<String, ? extends Object> filterMapObj
Map<String, ? extends Object> filterMapObj
并且您可以直接将filterMap
分配给它。 您可以了解泛型通配符运算符
你可以简单地写
Map<String, Object> filterMapObj = new HashMap<>(filterMap);
可以使用putAll方法来解决这个问题。Object是所有对象的父类,所以不用转换就可以使用putAll。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.