如何将HashMap <K,V>值类型从Object更改为String?

Con*_*nor 3 java dictionary hashmap type-conversion data-structures

什么是最简单/最好的转换方式

Map<String, Object>
Run Code Online (Sandbox Code Playgroud)

HashMap<String, String>
Run Code Online (Sandbox Code Playgroud)

我正在使用的API具有返回Map的方法,但如果我不必每次都将Object转换为String,则会更容易.

此外,这甚至值得做吗?HashMap比Map更快/更有效吗?

我假设我必须遍历原始Map并将值复制到新的HashMap.

提前致谢!

Ada*_*old 9

您可以像其他人一样使用构造函数:

Map<String, String> newMap = new HashMap(oldMap);
Run Code Online (Sandbox Code Playgroud)

只有当你知道有Object问题的s 真的 String是s时,这才有效.

但是我应该提一下:

不要将接口混淆.Map只是一个界面 ; 仅包含定义的合同.一,另一方面是具体实现的的接口.因此,如果使用Map 接口或其运行时类型(HashMap),它在perfomrance方面没有任何区别.但是,如果您交换实现(TreeMap例如),它可能会有所不同.

编辑:

以下是EE人员喜欢的详细解决方案(不涉及任何铸造/原型警告):

public class MapConverter {
    public Map<String, String> convert(Map<String, Object> oldMap) {
        Map<String, String> ret = new HashMap<String, String>();
        for (String key : oldMap.keySet()) {
            ret.put(key, oldMap.get(key).toString());
        }
        return ret;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @AdamArold因为它是从外部库返回的,而不是来自他自己的代码. (2认同)