2013-07-19 57 views
-1

美好的一天,我有包含HashMap的ArrayList與結構獲取設置包含ArrayList中包含HashMap的項目,並把不同的HashMap的Java

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

所以很顯然,我的ArrayList的大小爲2。現在我很試圖讓ArrayList中項目的第一組並把它放在一個HashMap ..我試試這個,

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

,但它似乎是加入的ArrayList中的一切,而不是第一個項目。我可能做錯了什麼,或者我誤解了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; 
    } 
+0

的代碼看起來不錯。你有沒有嘗試過一個小例子? – Fedy2

+0

你能完整地顯示列表的代碼嗎?由於代碼很好。 – Karthikeyan

+0

上面的代碼將添加HashMap1中的所有條目。但是,也許你已經意外地將所有條目添加到了HashMap1?我們需要查看更多代碼才能找到我認爲的錯誤。 – Ted

回答

0

正如評論指出的JB Nizet,你必須初始化循環內的地圖,否則你會放在同一地圖的所有元素。 這裏正確的片段:

for(int i = 0; i < array.length(); i++){ 
    HashMap<String,String> map = new HashMap<String,String>();