簡體   English   中英

將 Guava ListMultimap 轉換為 Java Map

[英]Convert Guava ListMultimap to Java Map

Guava MultiMapImmutableListMultimapImmutableSetMultimap的實現。 鑒於我已經創建了一個ImmutableListMultimap<String, Anything>實例,如何將其轉換為java.util.Map<String, List<Anything>>

asMap()方法返回java.util.Map<String, Collection<Anything>> ,但不能轉換為java.util.Map<String, List<Anything>>

我現在最好的是

 final Map<String, Collection<Anything>> listMultimap = multimap.asMap();
 // convert to Map<String, List<>>
 final Map<String, List<Anything>> listMap = listMultimap.entrySet().stream()
     .collect(Collectors.toMap(
                  Map.Entry::getKey, 
                  e -> (List<Anything>) e.getValue()));

但這看起來並不理想。 鑒於實例變量是 ListMultimap 類型,難道不應該有一種方便的方法將其表示為Map<..., List>嗎?

Apache commons-collections ArrayListValuedHashMap有同樣的問題。

ListMultimap.asMap()文檔提到

注意:返回的地圖值保證為List類型。 要使用更具體的泛型類型Map<K, List<V>>獲得此 map,請改為調用Multimaps.asMap(ListMultimap)

因此,只需Multimaps中使用 static 輔助方法之一即可:

返回multimap.asMap() ,其類型從Map<K, Collection<V>>更正為Map<K, List<V>>

暫無
暫無

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

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