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

标签 java string optimization map hashmap

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

关于java - 将 Map<String,String> 转换为 Map<String,Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21037263/

相关文章:

java - 使用 FileStreamSink 连接器将 Kafka 数据写入二进制文件

python - 类型错误:只能将 str (不是 "NoneType")连接到 str

java - IDEA中,如何在代码和注释之间自动添加一个空格?

java - 如果我将加密的 html 文件解析为字符串,我可以以某种方式从中获取文本吗?

java - Swagger 中的重载 Controller 方法

Java逐元素读取字符串中的元素

string - 如何在ActionScript中将字符串转换为 boolean 值?

algorithm - 有限制的交付优化

C 优化器消除意外变量

c - GCC 错误地优化了自定义地址处变量的指针相等测试