在数组列表中,添加新变量,并用新值替换现有值

jee*_*wat 3 java android arraylist

在数组列表中,使用时添加新变量

 pointList.add(i , coord); 
Run Code Online (Sandbox Code Playgroud)

添加新变量,并用新值替换现有值.如何阻止这些替换变量?

for(int i=0;i<coordinateArray.length();i++)
        {
            brokenArray= coordinateArray.getJSONObject(i);  
            x=brokenArray.getInt("x");
            y=brokenArray.getInt("y");

            Log.d("x", " "+i+ " "+x );
            Log.d("y", " "+i+ " "+y );

            coord.set(x, y);
            pointList.add(i , coord);

            Log.d("pointList", pointList.toString());
        }
Run Code Online (Sandbox Code Playgroud)

Lou*_*man 6

根据您提供的代码,您coord.set(x, y)每次都使用相同的对象.将对象添加到a List 不会复制它.

Java按值传递引用,而不是按值传递对象; 在调用时pointList.add(i, coord),您要将coord对象的引用添加到列表中,而不是coord对象的新副本.

相反,你必须创建一个新的PointCoordinates或通过每一次循环中的任何对象.你不能coord像在这里那样重复使用对象.