簡體   English   中英

地圖中HashMap的ImmutableMap.of()變通方法?

[英]ImmutableMap.of() workaround for HashMap in Maps?

有一些實用方法可以創建ImmutableMapImmutable.of(Key, value)及其重載。

但是這種方法對於Maps類中的HashMapLinkedHashMap不存在。

有沒有更好的方法來做到這一點,或者Guava假設這樣的地圖始終是一個常量地圖,而ImmutableMap是最好的選擇,並且不需要為HashMap提供實用程序。

為什么你想要那些常規的HashMapLinkedHashMap 你可以這樣做:

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(...))

Maps.newHashMap(Map map)

不同之處在於,對於不可變的地圖,您必須預先提供所有內容,因為在構建之后您無法更改它。 對於可變映射,您只需創建映射然后添加條目即可。 誠然,這使得它稍硬創造一個表達的地圖,但是,這並不傾向於在那里你會想要一個可變的地圖無論如何,以我的經驗問題。

你不能使用這里描述的ImmutableMapcopyOf方法嗎?

它應該是類似的東西

Map newImmutableMap = ImmutableMap.copyOf(yourMap);

ImmutableMap.of()返回一個沒有順序的基於哈希的不可變映射。

如果需要有序的不可變映射,則可以選擇ImmutableSortedMap.of()

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

這兩個類都提供了copyOf(Map)方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM