繁体   English   中英

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

[英]In an array list, new variable gets added and as well as replaces the existing values with new one

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

 pointList.add(i , coord); 

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

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());
        }

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

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

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

这是错误。

 coord.set(x, y);

您将循环中的值设置为同一对象。

在循环内创建coord对象并添加它。

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 );
        Coordinate coord = new Coordinate ();
        coord.set(x, y);

        pointList.add(i , coord);

        Log.d("pointList", pointList.toString());
    }

这解决了问题:)

 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 );
            Point coord = new Point();
            coord.set(x, y);
            pointList.add(i , coord);
            coord=null;
            Log.d("pointList", pointList.toString());
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM