地图中HashMap的ImmutableMap.of()变通方法?
有一些实用方法可以创建ImmutableMap
如Immutable.of(Key, value)
及其重载。
但是这种方法对于Maps
类中的HashMap
或LinkedHashMap
不存在。
有没有更好的方法来做到这一点,或者Guava假设这样的地图始终是一个常量地图,而ImmutableMap
是最好的选择,不需要为HashMap
提供实用程序。
为什么你想要那些常规的HashMap
或LinkedHashMap
? 你可以这样做:
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)
方法。