【发布时间】:2017-10-09 01:10:05
【问题描述】:
我有一个嵌套集合,格式如下:
HashMap<String, HashMap<String, List<String>>> errorList;
现在我使用这样的双括号内联初始化它
errorList.put(tempName, new HashMap<String, List<String>>() {{
put("upl", new ArrayList<String>() {{ add("Y"); add("Upload Success"); }});
}});
这存在于一个 foreach 循环中,tempName 的值在每次迭代中都会发生变化。
我这样做是因为我无法使用 List<String> 或 HashMap<String,List<String>> 的实例,因为每次我更改该实例中的值时,它都会反映在它嵌套的集合中。所以我不得不用双括号创建新实例初始化。
事情是:我想使用一个列表对象。而不是
new ArrayList<String>() {{ add("Y"); add("Upload Success"); }}
我想使用一个变量。
我该怎么做?
【问题讨论】:
-
如果你想使用一个变量,你为什么不直接做呢?
-
恐怕我还没有完全理解你的问题。请问create a Minimal, Complete, and Verifiable example好吗?
-
这段代码至少是可怕的,你应该有对象而不是那么多集合。这是无法维护的。
-
我只是在 spring 控制器中使用它,以便我可以传递错误列表来填充视图(jsp)中的错误表。范围在该控制器方法和视图内。我认为这个数据对象将在视图方面赋予我很大的灵活性。
标签: java list collections hashmap double-brace-initialize