1

我正在循环一个 JSONArray。names并且amountArrayList <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());

对于 i 的每个值,names.size() 是 i 的两倍,即使我在循环中只添加了一个元素。数据有 5 条记录,名称和数量为两列。但在循环之后,名称包含所有 10 个值(5 个名称和 5 个数量)。但实际上,应该只将 5 个名称添加到名称列表中。

我在日志中看到的..

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

为什么它将值添加amount_v到名称列表中?

4

1 回答 1

5

因为这两个引用调用amountnames引用了同一个 ArrayList 实例。

于 2012-07-08T12:59:59.090 回答