NodeList nList2 = doc.getElementsByTagName("dep");
Map<String, List<Map<String, String>>> depMap = new HashMap<String, List<Map<String, String>>>();
for (int temp = 0; temp < nList2.getLength(); temp++) {
Element el = (Element)nList2.item(temp);
String type=el.getAttribute("type");
Node nNode = nList2.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
List<Map<String,String>> depList = new ArrayList<Map<String,String>>();
String governor = getTagValue("governor", eElement);
String dependent = getTagValue("dependent", eElement);
Map<String, String> govdepmap = new HashMap<String, String>();
govdepmap.put(governor, dependent);
depList.add(govdepmap);
List<Map<String,String>> flist = new ArrayList<Map<String,String>>();
flist.add(govdepmap);
depMap.put(type, flist);
}
}
我编写了这段代码,但问题是每当循环运行时它就会替换已经存储在 depMap 中的列表。我希望它应该将新的 Map 追加到从 depMap 检索到的列表中,而不是替换它。
最佳答案
因此,您不需要在每次迭代中创建新列表,而是需要从 map 中获取列表,然后向该列表添加add()
项
改变
List<Map<String,String>> flist = new ArrayList<Map<String,String>>();
到
List<Map<String,String>> flist = depMap.get(type);
if(flist == null){
List<Map<String,String>> flist = new ArrayList<Map<String,String>>();
}
关于java - Java 中的 map 和列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11338827/