HashMap:在onClick事件(Frame)中按键获取键值

时间:2015-12-11 15:40:39

标签: java hashmap itemlistener

请提供一些建议。 我正在解析xml并将一些数据放到HashMap中。 请看一段代码:

final HashMap<String,String> urls = new HashMap<String,String>();
* * *
NodeList nList = doc.getElementsByTagName("Row");                       
        for (int z=0; z<nList.getLength(); z++) {
        Node nNode = nList.item(z);
        Element eElement = (Element) nNode; 

        NodeList a = eElement.getElementsByTagName("item");
        for (int i=0; i<a.getLength(); i++) {                               
            urls.clear();
            String b = eElement.getElementsByTagName("item").item(i).getTextContent();
            String c = eElement.getElementsByTagName("url").item(i).getTextContent();           
            urls.put(b, c);
            System.out.println(urls);                       
                }
            }

所以,我有这双配对:

{Select product=bla-bla-bla} 
{Single Landmine Shirt=/www.sample.com/landmine-single-shirt} 
{Women's Silver & Black Bar=/www.sample.com/womens-silver-and-black-bar}                         
{High Density Foam Rollers=/www.sample.com/high-density-foam-rollers}

现在我想按键(产品)打印键值(产品的Url),而我从d-down列表中选择相应的项目。

    /*comboBox:*/ addProduct.addItemListener(new ItemListener() {

        @Override
        public void itemStateChanged(ItemEvent e) {
            String s = String.valueOf(addProduct.getSelectedItem());
            if ((e.getStateChange() == ItemEvent.SELECTED) && (urls.containsKey(s))) {

            Object v = (String) urls.get(s);    
            System.out.println("Your url: " + v.toString());
            } 
        }       

    });

IDK我做错了什么,但当我只是简单地将字符串添加到地图时: urls.put(&#34;选择产品&#34;,&#34;测试网址和&#34; #34;); - &gt;一切都很好。 请告知如何处理它。 会对任何答案感到高兴

1 个答案:

答案 0 :(得分:1)

您知道在每次迭代时都要清除HashMap这一事实。这意味着您的HashMap将结束包含唯一元素:最后item代码的数据。

for (int i=0; i<a.getLength(); i++) {                               
    urls.clear();
    // ...
}

摆脱这一行,你的urls应该正确填写。