Arraylist java总是给我最后一个值

Arraylist java总是给我最后一个值,java,arrays,arraylist,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

我花了一整天来解决这个问题。我可以毫无问题地填充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]);
私有列表标记;
double[]m=新的double[3];
双精度[]a=新双精度[3];
....
marker=newarraylist();

对于(int i=0;i您需要为每个项目创建对象。您只创建一个引用,它们都使用相同的值并进行更新,您将获得最后更新的值

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

for(int i=0;i因为您一直在使用同一个数组,有效地一次又一次地覆盖它的值


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

对象创建应该在循环中,而不是在对象创建中。标记列表不应该重复创建。