0

我收集了地图。

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

如果我尝试向此集合添加另一个地图,它会给我运行时异常

不支持的操作。

可以做什么?

4

4 回答 4

3

很可能是因为 someMethod() 返回了一个您无法插入的集合。如果它是“Rread only”集合,那么它将在所有插入/添加调用上抛出 UnsupportedOperation。

于 2012-10-17T12:47:08.607 回答
0

它必须是不可修改的集合。如果没有看到“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 操作。”

于 2012-10-17T12:52:07.120 回答
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>());
于 2012-10-17T12:52:35.797 回答
0

HashMap 应该有赋值吗?否则会导致编译错误。如

xyz.add(new HashMap<String,Object>());
于 2012-10-17T12:53:20.613 回答