0
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 に保存されているリストが置き換えられるという問題があります。depMap から取得したリストに新しいマップを追加し、それを置き換えないようにする必要があります。

4

3 に答える 3

3

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>>();
}
于 2012-07-05T06:29:35.013 に答える
0

の初期化を for ループの外に移動flistgovdepmapますdepList

于 2012-07-05T06:32:41.223 に答える
0

コードを次のコードに変更するだけです。

    NodeList nList2 = doc.getElementsByTagName("dep");
    Map<String, List<Map<String, String>>> depMap = new HashMap<String, List<Map<String, String>>>();
    List<Map<String,String>> flist = null;
    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);
        if(flist == null){
            flist = new ArrayList<Map<String,String>>();
        }
        flist.add(govdepmap);
        depMap.put(type, depList);
      }
    }
于 2012-07-05T06:39:04.337 に答える