【问题标题】:Looping through an Array from Hashmap Data in Java从 Java 中的 Hashmap 数据中循环遍历数组
【发布时间】:2013-01-09 01:36:26
【问题描述】:

我有从 Web 服务下载的 XML 文件,我遇到的问题是我无法让它在循环之外正确显示数据。

XML 格式设置如下:

<section>
    <outage>
        <dummydata>test</dummydata>
   </outage>
    <outage>
        <dummydata>test2</dummydata>
   </outage>
</section>
<section>
   <outage>
    <dummydata>test3</dummydata>
   <outage>
</section>

请注意,某些部分可能会发生不止一次的中断。正如您在下面看到的,计数是正确的,但一次中断来自 4。

01-24 22:54:49.176: I/System.out(1924): Outage Count per sect 1
01-24 22:54:49.176: I/System.out(1924): Outage Count per sect 1
01-24 22:54:49.176: I/System.out(1924): Outage Count per sect 1
01-24 22:54:49.176: I/System.out(1924): Outage Count per sect 1
01-24 22:54:49.176: I/System.out(1924): Outage Count per sect 4
01-24 22:54:49.186: I/System.out(1924): Outage Count per sect 1
01-24 22:54:49.186: I/System.out(1924): Outage Count per sect 1
01-24 22:54:49.196: I/System.out(1924): Outages : 763674

这是完成所有工作的代码

for (int j = 0; j < arrPolygons.size(); j++) {

     if (isPointInPolygon(point, arrPolygons.get(j).getPoints())) {
      for (int outageInfo = 0; outageInfo < nodeList.getLength(); outageInfo++) {
            outageData = new LinkedList<HashMap<String, String>>();
             Node ouageInfoNode = nodeList.item(outageInfo);

              Element ouageInfoElement = (Element) ouageInfoNode;
              NodeList ouageInfoList = ouageInfoElement.getElementsByTagName("Outage");
              System.out.println("Outage Count per sect "+ouageInfoList.getLength());
                 for (int outages = 0; outages < ouageInfoList.getLength(); outages++) {
                     Node outageNode = ouageInfoList.item(outages);
                     Element outageDataElement = (Element) outageNode;
                     NodeList outageDataList =outageDataElement.getElementsByTagName("outagenum");   

                     outageDataElement = (Element) outageDataList.item(0);
                     outageDataList = outageDataElement.getChildNodes();

                     outagenum = ((Node) outageDataList.item(0))
                            .getNodeValue();

                    //This is what I want to loop 
                      HashMap<String, String> map = new HashMap<String, String>();
                      map.put("outagenum", outagenum);
                    outageData.add(outages, map);                        
                    } 

                }
                  Toast.makeText(MainActivity.this, "Inside " + arrPolygons.get(j).getId()+" "+ outageData.get(j), Toast.LENGTH_LONG).show();

                  System.out.println("Outages : " + outageData.get(0));

              }
           }

         }
    }

我的结果应该是这样的

Index 0 - {test,test2}
Index 1 - {test3}

谁能告诉我我在这个循环中做错了什么?

【问题讨论】:

    标签: java android loops for-loop hashmap


    【解决方案1】:
     for (int outageInfo = 0; outageInfo < nodeList.getLength(); outageInfo++) {
                outageData = new LinkedList<HashMap<String, String>>();
    

    应该

             outageData = new LinkedList<HashMap<String, String>>();
     for (int outageInfo = 0; outageInfo < nodeList.getLength(); outageInfo++) {
    

    【讨论】:

    • 我这样做了,现在它是索引 0-2,示例是我需要它如何显示索引 0-1,其中零具有多个值。想法?
    猜你喜欢
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2011-10-08
    • 2014-05-29
    • 1970-01-01
    相关资源
    最近更新 更多