我遇到了一个要求,为一个键存储多个值,所以我来了解Guava的Multimap
。
现在在我的代码中需要检索键:值 K: V[]
,在这种情况下,值将是一个数组,因为我为同一键存储多个值,到一个列表中:
List<Map.Entry<String, String>
我是这样做的:
List<Map.Entry<String, String>> mapCall = (List<Map.Entry<String, String>>) multimap.entries();
上面的代码应该返回每个Entry<String, String>
的Collection
,这里是List
。
java.lang.ClassCastException: com.google.common.collect.AbstractMultimap$4 cannot be cast to java.util.List
我认为通过在Multimap
上调用entries()
方法返回的Collection
不是Java Collections类型。找不到一个确切的方法来完成它。
实现这一目标的正确方法应该是什么??
方法返回类型为Collection。文档没有说返回的集合是List,所以您不应该做这样的假设。
如果确实需要List,则将返回集合中的元素复制到新列表中:
List<Map.Entry<String, String>> mapCall = new ArrayList<>(multimap.entries());