-1

美好的一天,我有一个具有结构的 HashMaps Arraylist

 [{key1, value1}, {key2, value2}...{keyn, valuen}] , [{key1, value1}, {key2, value2}...{keyn, valuen}] . 

很明显,我的 ArrayList 的大小为 2。现在我试图在 ArrayList 中的 Item 上获取第一个集合并将其放入 HashMap 中。我试试这个,

HashMap<String,String> infoMap  = new HashMap<String,String>();
    infoMap.putAll(arraylist.get(0));

但它似乎是在数组列表中添加所有内容,而不是第一项。我可能做错了什么,或者我误解了 putAll() 方法。

更新: 这就是我填充 Arraylist 的方式。

public ArrayList<HashMap<String,String>> parseJSONObject(JSONObject json) throws JSONException{
        HashMap<String,String> map = new HashMap<String,String>();
        ArrayList<HashMap<String,String>> arrayList = new ArrayList<HashMap<String, String>>();
        String date = null;
        String value = null;

        JSONArray array = json.getJSONArray("datasets");

        for(int i = 0; i < array.length(); i++){
            JSONArray array2 = array.getJSONArray(i);
            Log.d(TAG, "array2 size is " + array2.length());


            for(int j = 0; j < array2.length(); j++){


            JSONObject jobj = array2.getJSONObject(j);
            date = jobj.getString("Date");
            value = jobj.getString("Value");
               map.put(date, value);
            }

            arrayList.add(map);
        }

        return arrayList;
    }
4

1 回答 1

0

正如JB Nizet在评论中所说,您必须在循环内初始化 Map ,否则您会将所有元素放在同一个地图中。这里是正确的片段:

for(int i = 0; i < array.length(); i++){
  HashMap<String,String> map = new HashMap<String,String>();
于 2013-07-22T12:30:15.793 回答