HashMap:在onClick事件(Frame)期间按键获取Key-Value
HashMap: get Key-Value by key during onClick event (Frame)
需要一些建议。
我正在解析 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());
}
}
});
我知道我做错了什么,但是当我只是将简单的字符串添加到地图时:urls.put("Select product", "test Url"); -> 一切正常。
请指教如何处理。
很高兴得到任何答案
您知道您在每次迭代中清除 HashMap
的事实。这意味着您的 HashMap
将结束包含一个且唯一的元素:最后一个 item
标签的数据。
for (int i=0; i<a.getLength(); i++) {
urls.clear();
// ...
}
去掉这一行,你的urls
应该会正确填写。
需要一些建议。 我正在解析 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());
}
}
});
我知道我做错了什么,但是当我只是将简单的字符串添加到地图时:urls.put("Select product", "test Url"); -> 一切正常。 请指教如何处理。 很高兴得到任何答案
您知道您在每次迭代中清除 HashMap
的事实。这意味着您的 HashMap
将结束包含一个且唯一的元素:最后一个 item
标签的数据。
for (int i=0; i<a.getLength(); i++) {
urls.clear();
// ...
}
去掉这一行,你的urls
应该会正确填写。