我收集了地图。
Collection<Map<String,Object>> xyz = (Collection<Map<String,Object>>) someMethod();
xyz.add(new HashMap<>());
如果我尝试向此集合添加另一个地图,它会给我运行时异常
不支持的操作。
可以做什么?
我收集了地图。
Collection<Map<String,Object>> xyz = (Collection<Map<String,Object>>) someMethod();
xyz.add(new HashMap<>());
如果我尝试向此集合添加另一个地图,它会给我运行时异常
不支持的操作。
可以做什么?
很可能是因为 someMethod() 返回了一个您无法插入的集合。如果它是“Rread only”集合,那么它将在所有插入/添加调用上抛出 UnsupportedOperation。
它必须是不可修改的集合。如果没有看到“someMethod()”的代码,就不可能再说下去了。
编辑 好的,检查 API 的 Map.values() http://docs.oracle.com/javase/6/docs/api/java/util/Map.html#values ()
具体这部分。 “该集合支持元素移除,即通过 Iterator.remove、Collection.remove、removeAll、retainAll 和 clear 操作从 map 中移除对应的映射。不支持 add 或 addAll 操作。”
似乎 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>());
HashMap 应该有赋值吗?否则会导致编译错误。如
xyz.add(new HashMap<String,Object>());