2

ArrayListofで要素の配列を取得するにはどうすればよいHashMapsですか? URLキーを持つHas​​hMapがあります。値は URL アドレスです。いくつかHashMapsは に格納されますArrayList。私が欲しいのは、arrayすべての URL 文字列を含む です。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();
    }
4

2 に答える 2

4

あなたの質問から推測できることから、あなたは次のことをしようとしているようです

// 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()は、指定されたインデックスCollectionの に含まれる値のビューを返します。これは、新しい のインスタンス化と設定に使用されます。HashMapArrayListArrayList

ネストされたor内のすべての値を取得する場合は、同様の方法で取得できますが、全体を反復処理する必要があります。HashMapsurlsurls ArrayList

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

PS悪い変数名を許してください!

于 2012-11-28T01:08:43.403 に答える
0

テーブルを作っているようです。Google Guava ライブラリを追加できる場合は、次のものを使用できます。

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

JavaDoc を参照してください。

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

于 2012-11-27T22:40:23.897 に答える