[英]ImmutableMap.of() workaround for HashMap in Maps?
有一些實用方法可以創建ImmutableMap
如Immutable.of(Key, value)
及其重載。
但是這種方法對於Maps
類中的HashMap
或LinkedHashMap
不存在。
有沒有更好的方法來做到這一點,或者Guava假設這樣的地圖始終是一個常量地圖,而ImmutableMap
是最好的選擇,並且不需要為HashMap
提供實用程序。
為什么你想要那些常規的HashMap
或LinkedHashMap
? 你可以這樣做:
Map<String, Object> map = Maps.newHashMap();
map.put(key, value);
使用ImmutableMap
的事情是創建它有點麻煩; 首先需要創建一個Builder
,然后將鍵值對放在構建器中,然后在其上調用build()
來創建ImmutableMap
。 如果要創建具有單個鍵值對的ImmutableMap
,則ImmutableMap.of()
方法會使寫入更短。
如果您不使用ImmutableMap.of()
方法,請考慮您必須編寫的內容:
ImmutableMap<String, Object> map = ImmutableMap.builder()
.put(key, value);
.build();
試試Maps.newHashMap(ImmutableMap.of(...))
不同之處在於,對於不可變的地圖,您必須預先提供所有內容,因為在構建之后您無法更改它。 對於可變映射,您只需創建映射然后添加條目即可。 誠然,這使得它稍硬創造一個表達的地圖,但是,這並不傾向於在那里你會想要一個可變的地圖無論如何,以我的經驗問題。
ImmutableMap.of()
返回一個沒有順序的基於哈希的不可變映射。
如果需要有序的不可變映射,則可以選擇ImmutableSortedMap.of()
。
ImmutableSortedMap提供了諸如firstKey()
, lastKey()
, headMap(K)
和tailMap(K)
;
這兩個類都提供了copyOf(Map)
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.