地图中HashMap的ImmutableMap.of()变通方法?

Pre*_*raj 28 java collections guava

有一些实用方法可以创建ImmutableMaplike Immutable.of(Key, value)和它的重载.

但这种方法在课堂上HashMap或课堂上都不存在. 有没有更好的方法来做到这一点或番石榴假设这样的地图总是一个恒定的地图,是最好的选择,并不需要提供实用程序.LinkedHashMapMaps

ImmutableMapHashMap

Jes*_*per 17

为什么你想要那些常规HashMap或LinkedHashMap?你可以这样做:

Map<String, Object> map = Maps.newHashMap();
map.put(key, value);
Run Code Online (Sandbox Code Playgroud)

事情ImmutableMap是,创建它有点麻烦; 首先需要创建一个Builder,然后将键值对放在构建器中,然后调用build()它来创建你的ImmutableMap.ImmutableMap.of()如果要创建ImmutableMap具有单个键值对的方法,则此方法会缩短写入时间.

如果您不使用该ImmutableMap.of()方法,请考虑您必须编写的内容:

ImmutableMap<String, Object> map = ImmutableMap.builder()
    .put(key, value);
    .build();
Run Code Online (Sandbox Code Playgroud)

  • Java 8?:)我相信它将类似于Java 7 - 过期和过度承诺:)... (2认同)
  • ImmutableMap不支持`null`值. (2认同)

小智 15

尝试 Maps.newHashMap(ImmutableMap.of(...))

Maps.newHashMap(Map map)

  • 好吧,`Maps.newHashMap(ImmutableMap.of(...))`是写的简称,但效率不高:你首先要创建一个`ImmutableMap`,然后把它的内容复制到一个普通的`HashMap`,然后把临时的`ImmutableMap`扔掉...... (5认同)

Jon*_*eet 7

不同之处在于,对于不可变的地图,您必须预先提供所有内容,因为在构建之后您无法更改它.对于可变映射,您只需创建映射然后添加条目即可.诚然,这使得它稍硬创造一个表达的地图,但是,这并不倾向于是在那里你会想要一个可变的地图无论如何,以我的经验问题.


dan*_*nny 5

你不能使用这里描述copyOf的方法吗?ImmutableMap

它应该是这样的

Map newImmutableMap = ImmutableMap.copyOf(yourMap);
Run Code Online (Sandbox Code Playgroud)