2012-07-08 31 views
1

我正在循環JSONArray。 namesamountArrayList <String>ArrayList的字符串變得加倍,同時爲循環添加里面

JSONArray data = json.getJSONArray("data"); 
int i = 0; 
for (i = 0; i < data.length(); ++i) { 
    JSONObject rec = data.getJSONObject(i); 
    String name = rec.getString("name"); 
    names.add(i, name); 
    String amount_v = rec.getString("amount"); 
    amount.add(i, amount_v); 
    Log.v(logtag, i + " - " + names.size()); 
} 
Log.v(logtag, "final - " + names.size()); 

對於i的每個值,names.size()是兩倍的i即使我只增加一個循環內部元件。數據有5條記錄,名稱和數量爲兩列。 但循環後,名稱包含所有10個值(5個名稱和5個數量)。但實際上,名稱列表中只應添加5個名稱。

我在日誌中看到了什麼..

0 - 2 
1 - 4 
2 - 6 
3 - 8 
4 - 10 
final - 10 

爲什麼它添加amount_v值到名稱列表?

回答

5

因爲兩個引用稱爲amountnames指向同一個ArrayList實例。

+0

哎呀。那就對了。當初始化他們,我不喜歡這樣,'名稱=金額=新的ArrayList ();'謝謝:) – emaillenin 2012-07-08 13:01:36

+1

紀念他的答案正確即可。 – Zasz 2012-07-08 13:06:19