java - HashMap:在onClick事件(Frame)期间通过键获取Key-Value

标签 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}

现在我想通过 key(Product) 打印键值(产品的 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());
            } 
        }       

    });

不知道我做错了什么,但是当我只是向 map 添加简单的字符串时: urls.put("Select Product", "test Url"); -> 一切正常。 请指教如何处理。 很高兴得到任何答案

最佳答案

您知道您在每次迭代时都会清除 HashMap。这意味着您的 HashMap 将最终包含一个且唯一的元素:最后一个 item 标记的数据。

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

去掉这一行,您的url就应该正确填写。

关于java - HashMap:在onClick事件(Frame)期间通过键获取Key-Value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34227256/

相关文章:

java - 更改类的名称

java - 如何将数组放入 Hashmap 中以编码 JSON 对象

java - Java 中使用 ArrayList 和 HashMap 进行紧凑分割和新行操作

java - 实例化 map 列表时获取 'Type mismatch: cannot convert from ArrayList<HashMap<String,String>> to List<Map<String,String>>'

java - 取消选择 JToggleButton 时未调用 ItemStateChanged 事件

java - 如何使用chrome开发工具(F12)在Chrome浏览器中选择cssSelector值?

java - 在 Spring 中保护 REST 资源的更好方法?

java - 如何在java中使用DOCX4J将图片放在Word(.docx)文件的某个地方

java - 如何通过更改不同的组合框值来影响 jlabel

java - 我不知道如何实现 ItemListener 和 ActionListener