将Map <string,string>转换为Map <string,object> </string,object> </string,string>

时间:2014-01-10 06:06:22

标签: java string optimization map hashmap

我有两张地图

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);
            }
        }

它工作正常,有没有其他方法可以做到这一点,而无需迭代地图中的所有条目。

4 个答案:

答案 0 :(得分:42)

您可以使用putAll

filterMapObj.putAll(filterMap);

(见the Javadoc。)

编辑添加:我应该注意,上述方法或多或少等同于迭代地图的元素:它会使您的代码更清晰,但如果您不想要的原因迭代元素实际上是一个性能问题(例如,如果你的地图是巨大的),那么它不太可能帮助你。另一种可能性是写:

filterMapObj = Collections.<String, Object>unmodifiableMap(filterMap);

创建filterMap的不可修改的“视图”。当然,这更具限制性,因为它不会让您独立修改filterMapObjfilterMap。 (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。