GuavaMultiMap
有实现ImmutableListMultimap
和ImmutableSetMultimap
. 鉴于我已经创建了一个ImmutableListMultimap<String, Anything>
实例,我怎样才能将它转换成一个java.util.Map<String, List<Anything>>
?
该asMap()
方法返回 a 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-collectionsArrayListValuedHashMap
也有同样的问题。