多维数组列表奇怪的行为
Multidimensional Array List Strange behavior
我真的不知道我做错了什么。我正在将一些数据收集到一个字符串数组中。最后我得到了一个重复的答案而不是我的方面。
final ArrayList<List<String>> FoundRides = new ArrayList<>();
FoundRides.clear();
for ( int i=0; i< array.length(); i++){FoundRides.add(Arrays.asList("Ankit","Bohra","Xyz")); };
final ArrayList<String> FLines = new ArrayList<String>();
for ( int i=0; i< array.length(); i++){
JSONObject line = array.getJSONObject(i);
FLines.clear();
FLines.add(line.getString("destinatie"));
FLines.add(line.getString("kmride"));
FLines.add(line.getString("created_at"));
// FoundRides.set(i,FLines);
FoundRides.add(0,FLines);
}
来自日志:
与FoundRides.add(0,FLines);
Initialize AllRides = [[Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
INSIDE FOR FLines = [rds, 232, 2018-05-11 00:52:38]
INSIDE FOR Counter = 0
INSIDE FOR AllRides FoundRides = [[rds, 232, 2018-05-11 00:52:38], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
INSIDE FOR FLines = [rds, 333, 2017-11-08 21:04:24]
INSIDE FOR Counter = 1
INSIDE FOR AllRides FoundRides = [[rds, 333, 2017-11-08 21:04:24], [rds, 333, 2017-11-08 21:04:24], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
INSIDE FOR FLines = [rds, 111, 2017-11-02 23:46:08]
INSIDE FOR Counter = 2
INSIDE FOR AllRides FoundRides = [[rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
OUTSIDE FOR AllRides = [[rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
与FoundRides.set(i,FLines);
Initialize AllRides = [[Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
INSIDE FOR FLines = [rds, 232, 2018-05-11 00:52:38]
INSIDE FOR Counter = 0
INSIDE FOR AllRides FoundRides = [[rds, 232, 2018-05-11 00:52:38], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
INSIDE FOR FLines = [rds, 333, 2017-11-08 21:04:24]
INSIDE FOR Counter = 1
INSIDE FOR AllRides FoundRides = [[rds, 333, 2017-11-08 21:04:24], [rds, 333, 2017-11-08 21:04:24], [Ankit, Bohra, Xyz]]
INSIDE FOR FLines = [rds, 111, 2017-11-02 23:46:08]
INSIDE FOR Counter = 2
INSIDE FOR AllRides FoundRides = [[rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08]]
OUTSIDE FOR AllRides = [[rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08]]
为什么我最后三个位置的结果都是最后一个? for FLines 的每次迭代都得到了我期望的结果,但在最后一次迭代中,收集数据的数组 FoundRides 中的所有行都是相同的。
非常抱歉重复了,不知为何找了两天都没有找到答案,所以我打开一个新的。
这里:
Why does my ArrayList contain N copies of the last item added to the list?
这几乎解释了为什么我收到错误。
我真的不知道我做错了什么。我正在将一些数据收集到一个字符串数组中。最后我得到了一个重复的答案而不是我的方面。
final ArrayList<List<String>> FoundRides = new ArrayList<>();
FoundRides.clear();
for ( int i=0; i< array.length(); i++){FoundRides.add(Arrays.asList("Ankit","Bohra","Xyz")); };
final ArrayList<String> FLines = new ArrayList<String>();
for ( int i=0; i< array.length(); i++){
JSONObject line = array.getJSONObject(i);
FLines.clear();
FLines.add(line.getString("destinatie"));
FLines.add(line.getString("kmride"));
FLines.add(line.getString("created_at"));
// FoundRides.set(i,FLines);
FoundRides.add(0,FLines);
}
来自日志:
与FoundRides.add(0,FLines);
Initialize AllRides = [[Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
INSIDE FOR FLines = [rds, 232, 2018-05-11 00:52:38]
INSIDE FOR Counter = 0
INSIDE FOR AllRides FoundRides = [[rds, 232, 2018-05-11 00:52:38], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
INSIDE FOR FLines = [rds, 333, 2017-11-08 21:04:24]
INSIDE FOR Counter = 1
INSIDE FOR AllRides FoundRides = [[rds, 333, 2017-11-08 21:04:24], [rds, 333, 2017-11-08 21:04:24], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
INSIDE FOR FLines = [rds, 111, 2017-11-02 23:46:08]
INSIDE FOR Counter = 2
INSIDE FOR AllRides FoundRides = [[rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
OUTSIDE FOR AllRides = [[rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
与FoundRides.set(i,FLines);
Initialize AllRides = [[Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
INSIDE FOR FLines = [rds, 232, 2018-05-11 00:52:38]
INSIDE FOR Counter = 0
INSIDE FOR AllRides FoundRides = [[rds, 232, 2018-05-11 00:52:38], [Ankit, Bohra, Xyz], [Ankit, Bohra, Xyz]]
INSIDE FOR FLines = [rds, 333, 2017-11-08 21:04:24]
INSIDE FOR Counter = 1
INSIDE FOR AllRides FoundRides = [[rds, 333, 2017-11-08 21:04:24], [rds, 333, 2017-11-08 21:04:24], [Ankit, Bohra, Xyz]]
INSIDE FOR FLines = [rds, 111, 2017-11-02 23:46:08]
INSIDE FOR Counter = 2
INSIDE FOR AllRides FoundRides = [[rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08]]
OUTSIDE FOR AllRides = [[rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08], [rds, 111, 2017-11-02 23:46:08]]
为什么我最后三个位置的结果都是最后一个? for FLines 的每次迭代都得到了我期望的结果,但在最后一次迭代中,收集数据的数组 FoundRides 中的所有行都是相同的。
非常抱歉重复了,不知为何找了两天都没有找到答案,所以我打开一个新的。
这里: Why does my ArrayList contain N copies of the last item added to the list?
这几乎解释了为什么我收到错误。