【问题标题】:ArrayList of HashMap elements to ArrayHashMap 元素的 ArrayList 到 Array
【发布时间】:2012-11-15 16:10:48
【问题描述】:

如何在ArrayListHashMaps 中获取元素数组?我有一个带有 url 键的 HashMap。该值是一个 url 地址。几个HashMaps 存储在ArrayList 中。我想要的是一个带有所有 url 字符串的 array。我对找到的解决方案不满意,因为我认为它可以通过一些操作从 ArrayList 中提取出来。

    // Hashmap for ListView        
    ArrayList<HashMap<String, String>> itemsList = new ArrayList<HashMap<String, String>>();

    // Creating JSON Parser instance
    JSONParser jParser = new JSONParser();
    jParser.execute(url); 

    try {
        JSONObject json = jParser.get();

        items = json.getJSONArray(TAG_ITEMS);
        //This is the solution that I want to optimize
        urls = new String[items.length()];

        // looping through All items
        for(int i = 0; i < items.length(); i++){
            JSONObject c = items.getJSONObject(i);

            // Storing each json item in variable
            String title = c.getString(TAG_TITLE);
            String description = c.getString(TAG_DESCRIPTION);
            String author = c.getString(TAG_AUTHOR);

            // Media is another JSONObject
            JSONObject m = c.getJSONObject(TAG_MEDIA);
            String url = m.getString(TAG_URL);

            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();

            // adding each child node to HashMap key => value
            map.put(TAG_TITLE, title);
            map.put(TAG_DESCRIPTION, description);
            map.put(TAG_AUTHOR, author);
            map.put(TAG_URL, url);

            // Solution
            urls[i] = url;

            // adding HashList to ArrayList
            itemsList.add(map);
        }
    } catch (JSONException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }

【问题讨论】:

    标签: java android arrays arraylist hashmap


    【解决方案1】:

    从我可以从您的问题中推断出,听起来您正在尝试执行以下操作

    // Assuming previously declared and instantiated urls ArrayList with populated values in the nested HashMaps. 
    ArrayList<HashMap<String, String>> urls;
    // Create a new List using HashMap.values from urls.
    List<String> urlList = new ArrayList<String>(urls.get(index).values());
    

    urls.get(index).values() 将在指定的ArrayList 索引处返回HashMap 中包含的值的Collection 视图,该索引将用于实例化和填充新的ArrayList

    如果您想获得嵌套HashMapsurls每个 内的所有 值,您可以以类似的方式进行,但您将需要遍历整个urls ArrayList

    for (HashMap<String, String> urlValues : urls) {
        urlList.addAll(urlValues.values());
    }
    

    附:原谅我不好的变量名!

    【讨论】:

      【解决方案2】:

      看起来您正在构建一张桌子。如果您可以添加 Google Guava 库,则可以使用以下内容:

      Table<Integer, String, String> Table = HashedBasedTable.create()
      

      查看 JavaDoc:

      http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Table.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-27
        • 1970-01-01
        • 2014-11-13
        • 1970-01-01
        • 2020-07-27
        相关资源
        最近更新 更多