1

JSONArrayをループしています。namesamountArrayList <String>

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());

ループ内に要素を1つだけ追加している場合でも、iのすべての値について、names.size()はiの2倍です。データには、名前と金額が2列の5つのレコードがあります。ただし、ループの後、名前には10個の値すべて(5個の名前と5個の金額)が含まれます。しかし実際には、5つの名前だけが名前リストに追加されるべきでした。

ログに表示されるもの。

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

なぜamount_v名前リストにの値を追加するのですか?

4

1 に答える 1

5

2つの参照が呼び出され、同じArrayListインスタンスを参照しているためですamountnames

于 2012-07-08T12:59:59.090 に答える