【问题标题】:How do I obtain the values of LinkedList<HashMap<String,String>>?如何获取 LinkedList<HashMap<String,String>> 的值?
【发布时间】:2026-01-22 17:45:01
【问题描述】:

我有这个 XMLParser:

public class XMLParser {
    private URL url;

    public XMLParser(String url){
        try {
            this.url = new URL(url);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }

    public LinkedList<HashMap<String, String>> parse() {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        LinkedList<HashMap<String, String>> entries = new LinkedList<HashMap<String,String>>();
        HashMap<String, String> entry;
        try {
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document dom = builder.parse(this.url.openConnection().getInputStream());
            Element root = dom.getDocumentElement();
            NodeList items = root.getElementsByTagName("item");
            for (int i=0; i<items.getLength(); i++) {
                entry = new HashMap<String, String>();
                Node item = items.item(i);
                NodeList properties = item.getChildNodes();
                for (int j=0; j<properties.getLength(); j++) {
                    Node property = properties.item(j);
                    String name = property.getNodeName();
                    if (name.equalsIgnoreCase("title")) {
                        entry.put(CheckNewPost.DATA_TITLE, property.getFirstChild().getNodeValue());
                    } else if (name.equalsIgnoreCase("link")) {
                        entry.put(CheckNewPost.DATA_LINK, property.getFirstChild().getNodeValue());
                    }
                }
                entries.add(entry);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return entries;
    }

}

问题是我不知道如何获取 LinkedList 上添加的最后一个值并将其显示在 Toast 上。我试过这个:

XMLParser par = new XMLParser(feedUrl);
        HashMap<String, String> entry = par.parse().getLast();
        String[] text = new String[] {entry.get(DATA_TITLE), entry.get(DATA_LINK)};
        Toast t = Toast.makeText(getApplicationContext(), text[0], Toast.LENGTH_LONG);
        t.show();

显然我没有足够的经验,我对 Map、HashMap 等几乎一无所知……XMLParser 不是我的。

【问题讨论】:

    标签: java android map linked-list hashmap


    【解决方案1】:

    要遍历 HashMap 中的所有值,您可以使用 EntrySet:

    for (Map.Entry<String, String> entry : hashMap.entrySet()) {
        Log.i(TAG, "Key: " + entry.getKey() + ", Value: " + entry.getValue());
    }
    

    对于只获取最后一个值,你可以试试这个:

    hashMap.get(hashMap.size() - 1);
    

    【讨论】:

      【解决方案2】:

      所以条目是 HashMap,这意味着您需要从 Map 中获取 Named/Value 对。所以对于 map,有 Named 也称为 Key 或(hashed index),并且对于每个“Key”,都存在一个“value”,因此。

      Map<String, String> entries = new HashMap<String, String>();
      entries.put("Key1", "Value for Key 1");
      entries.put("Key 2", "Key 2 value!");
      entries.put("Key1", "Not the original value for sure!"); // replaced 
      

      以后你可以得到它:

      String val1 = entries.get("Key1"); // "Not the original value for sure!"
      String val2 = entries.get("Key 2"); //"Key 2 value!"
      

      然后循环遍历你会做的地图:

      for (String key : entries.keySet()) {
         String value = entries.get(key);
      }
      

      希望有所帮助。您也可以 google “Java Map 示例”了解更多信息。

      【讨论】:

        最近更新 更多