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

有一些实用方法可以创建ImmutableMapImmutable.of(Key, value)及其重载。

但是这种方法对于Maps类中的HashMapLinkedHashMap不存在。

有没有更好的方法来做到这一点,或者Guava假设这样的地图始终是一个常量地图,而ImmutableMap是最好的选择,不需要为HashMap提供实用程序。

为什么你想要那些常规的HashMapLinkedHashMap ? 你可以这样做:

 Map map = Maps.newHashMap(); map.put(key, value); 

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

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

 ImmutableMap map = ImmutableMap.builder() .put(key, value); .build(); 

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

Maps.newHashMap(Map map)

不同之处在于,对于不可变的地图,您必须预先提供所有内容,因为在构建之后您无法更改它。 对于可变地图,您只需创建地图然后添加条目即可。 不可否认,这使得在单个表达式中创建地图有点困难,但根据我的经验,这不会成为您想要一个可变地图的问题。

ImmutableMap.of()返回一个没有顺序的基于哈希的不可变映射。

如果需要有序的不可变映射,则可以选择ImmutableSortedMap.of()

ImmutableSortedMap提供了诸如firstKey()lastKey()headMap(K)tailMap(K) ;

这两个类都提供了copyOf(Map)方法。