2016-11-23 87 views
1

是否有可能以任何方式將Multimap轉換爲HashMap。我知道我們可以將multimap轉換爲map,但是我想將multimap轉換爲hashmap。我不認爲它是可能的,但如果有任何出路,請讓我知道。Guava Mutlimap to HashMap

+1

由於名稱表明它們是不同的東西,因此不能將'Multimap'命名爲'HashMap'。你可以在'Multimap'上調用'asMap()',如果你想確保它是'HashMap',可以嘗試'Maps.newHashMap(multimap.asMap())'。但請注意一點:你會得到一個'Map >'所以如果你有任何機會在'Map '之後,就會被警告這可能會導致數據丟失(出於某種原因存在multimaps) 。 – Thomas

+0

我的回答對你有幫助嗎? – xenteros

+0

@Thomas你爲什麼不提供你的評論作爲答案? – mfulton26

回答

4

是否有可能以任何方式將Multimap轉換爲HashMap。

不,你不能多重映射到一個HashMap,因爲 - 正如名稱所表示的 - 他們是不同的東西,即Multimap意味着多個值映射到一個關鍵而Map是旨在將一個值映射到密鑰。因此,將Multimap<K, V>轉換爲Map總是會產生類似Map<K, Collection<V>>(或者,取決於實際的Multimap實施方式以及使用其他方法Map<K, List<V>>等)。

我知道我們可以將multimap轉換爲地圖,但我想將multimap轉換爲hashmap。

你可能指的是asMap()方法返回一個Map<K, Collection<V>>。這些可能不是HashMap的實例,但您可以通過調用Maps.newHashMap(multimap.asMap())輕鬆創建一個基本上採用生成的映射並將值(引用)複製到新的HashMap

+0

'不,你不能把一個Multimap映射到一個HashMap,因爲 - 名稱表明 - 他們是不同的東西'大聲笑 - 沒有任何意義。你可以將'Exception'強制轉換爲'RunTimeException'。 – xenteros

+0

@xenteros不,你不能,'RuntimeException'擴展'Exception',而不是相反。至於答案,這顯然意味着'Multimap'和'Map'是無關的接口,就像後面開發的那樣。 –

+0

@xenteros'RuntimeException' _是一個''Exception'',因此情況有效(儘管不一定在兩個方向取決於實際的實現)。然而'Multimap'和'Map'是不同的東西,並且沒有共同的層次結構(除了'Object' ofc)。只是他們都是地圖並不意味着你可以_cast_他們。 – Thomas