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