将 Map<String,String> 转换为 Map<String,Object>

2022-09-01 01:30:22

我有两张地图

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中的所有条目。


答案 1

无需编写自己的循环来调用 ,您可以这样做,它执行相同的操作:putputAll

filterMapObj.putAll(filterMap);

(参见 Javadoc

正如Asanka Siriwardena在他/她的答案中指出的那样,如果您的计划在创建后立即填充,那么您可以使用自动执行此操作的构造函数:filterMapObj

filterMapObj = new HashMap<>(filterMap);

但需要明确的是,上述内容或多或少等同于迭代地图的元素:它会让你的代码更干净,但是如果你不想迭代元素的原因实际上是一个性能问题(例如,如果你的地图是巨大的),那么它不太可能帮助你。另一种可能性是写:

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

这创建了一个不可修改的“视图”。当然,这更具限制性,因为它不会让你独立修改。(无法修改,任何修改也会受到影响。filterMapfilterMapObjfilterMapfilterMapObjfilterMapfilterMapObj


答案 2

为此,可以使用通配符运算符。定义为,您可以直接将其分配给它。您可以了解泛型通配符运算符filterMapObjMap<String, ? extends Object> filterMapObjfilterMap