我有两张 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 ”。当然,这更具限制性,因为它不允许您单独修改filterMapObjfilterMap。 (filterMapObj不能修改,对filterMap的任何修改也会影响filterMapObj。)

08-26 13:23