我收集了地图。
Collection<Map<String,Object>> xyz = (Collection<Map<String,Object>>) someMethod();
xyz.add(new HashMap<>());
如果我尝试将另一个地图添加到此集合中,则会将运行时异常视为
UnsupportedOperation。
可以做些什么?
答案 0 :(得分:2)
很可能是因为someMethod()返回了一个无法插入的集合。如果它是“Rread only”集合,那么它将在所有插入/添加调用上抛出UnsupportedOperation。
答案 1 :(得分:0)
它必须是不可修改的集合。如果没有看到&#34; someMethod()&#34;的代码,就不可能再说了。
修改强> 好的,检查Map.values()的API http://docs.oracle.com/javase/6/docs/api/java/util/Map.html#values()
具体这一部分。 &#34;该集合支持元素删除,它通过Iterator.remove,Collection.remove,removeAll,retainAll和clear操作从地图中删除相应的映射。它不支持add或addAll操作。&#34;
答案 2 :(得分:0)
似乎someMethod()可能存在问题。我扩展你的例子,但它工作正常。
private static Collection<Map<String, Object>> someMethod() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("test", new Object());
List list=new ArrayList();
list.add(map);
return list;
}
Collection<Map<String, Object>> xyz = someMethod();
xyz.add(new HashMap<String, Object>());
答案 3 :(得分:0)
HashMap应该分配吗?否则会导致编译错误。 比如
xyz.add(new HashMap<String,Object>());