将地图添加到地图集合中

时间:2012-10-17 12:44:25

标签: java

我收集了地图。

Collection<Map<String,Object>> xyz = (Collection<Map<String,Object>>) someMethod();
xyz.add(new HashMap<>());

如果我尝试将另一个地图添加到此集合中,则会将运行时异常视为

UnsupportedOperation。

可以做些什么?

4 个答案:

答案 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>());