来自 HashMap 的 ImmutableMap.Builder

Ela*_*nda 1 java builder hashmap guava immutable-collections

HashMap<K,V>每个键都有一个默认值。

我想将它转换为一个ImmutableMap.Builder因为我有另一个ImmutableMap我想合并并覆盖到原始 HashMap 中。我想覆盖一些默认对并最终构建一个ImmutableMap.

如何将 转换HashMapImmutableMap.Builder

我还没有看到ImmutableMap.Builder 构造函数获得HashMap.

Jay*_*ker 5

简单地使用putAll还是我在这里遗漏了什么?您无法在构建时修改现有密钥,但可以添加更多:

    Map<String, String> srcMap = Map.of("A", "a", "B", "b", "C", "c");

    ImmutableMap<String, String> map = ImmutableMap.<String, String> builder()
            .putAll(srcMap)
            .put("D", "d")
            .build();

    map.forEach((k,v) -> System.out.printf ("[%s:%s]", k, v));
Run Code Online (Sandbox Code Playgroud)

如果要覆盖现有值,可以在srcMap调用之前修改自身putAll

此外,如果您有一个准备好转换为 ImmutableMap 的 HashMap,您可以跳过构建器部分,只需使用copyOf

ImmutableMap<String, String> finalMap = ImmutableMap.copyOf(srcMap);
Run Code Online (Sandbox Code Playgroud)