[英]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
对象的新副本。
相反,您必须每次通过循环创建一个新的Point
或Coordinates
或任何对象。 你不能像在这里一样重复使用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.