我整天都在研究这个问题。我没有问题填充arrayList,但是当我尝试获取值时,我总是记住最后一个值。
private List<double[]> marker;
double[] m= new double[3];
double[] a= new double[3];
....
marker= new ArrayList<double[]>();
for (int i=0;i<150;i++){
int k = Math.abs(random.nextInt(10));
int r = Math.abs(random.nextInt(10));
int s = Math.abs(random.nextInt(10));
m[0]=i;
m[1]=46+(((double)k)*0.1)+(((double)r)*0.01)+(((double)s)*0.001);
m[2]=9+(((double)r)*0.1)+(((double)s)*0.01)+(((double)k)*0.001);
marker.add(m);
}
a=marker.get(5);
Log.i("Io","indice: "+a[0]+"lat: "+a[1]+"lon"+a[2]);
我总是得到最后一次&#34;双倍[3]&#34;我在arrayList中添加了,为什么?
答案 0 :(得分:1)
您需要为每个项目创建对象。您只创建一个引用,它们都使用相同的更新并获得最后更新的值。
for (int i=0;i<150;i++){
m= new double[3];
}
将对象创建放在for循环中
答案 1 :(得分:1)
因为您一直使用相同的数组,所以有效地一遍又一遍地重写它。
您需要为列表的每个成员分配一个新数组。将new double[3]
放在循环中。