Arraylist java总是给我最后一个值

时间:2014-06-29 14:25:47

标签: java arrays arraylist

我整天都在研究这个问题。我没有问题填充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中添加了,为什么?

2 个答案:

答案 0 :(得分:1)

您需要为每个项目创建对象。您只创建一个引用,它们都使用相同的更新并获得最后更新的值。

for (int i=0;i<150;i++){
    m= new double[3]; 
}

将对象创建放在for循环中

答案 1 :(得分:1)

因为您一直使用相同的数组,所以有效地一遍又一遍地重写它。

您需要为列表的每个成员分配一个新数组。将new double[3]放在循环中。