-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が述べたように、ループ内でマップを初期化する必要があります。そうしないと、すべての要素を同じマップに配置します。正しいスニペットは次のとおりです。

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