[英]Convert Guava ListMultimap to Java Map
Guava MultiMap
有ImmutableListMultimap
和ImmutableSetMultimap
的實現。 鑒於我已經創建了一個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
有同樣的問題。
注意:返回的地圖值保證為
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.