Java点数列表

时间:2014-07-14 03:18:50

标签: java android arrays list loops

所以我遇到了这行代码的问题。

private List<PointF> userPath = new ArrayList<PointF>();
pointF movingPoint = new pointF();
pointF initialPoint = new pointF();
initialPoint = (1,1);

for (i = 0; i < 5; i++)
{
    movingPoint.x = initialPoint.x + i;
    movingPoint.y = initialPoint.y;

    userPath.add(movingPoint);
}

所以我想要的是userPath List有每个坐标,     [(1,1),(2,1),(3,1)......]

相反,我一直在努力     [(1,1)]第一次迭代     [(2,1),(2,1)]第二次迭代     [(3,1),(3,1),(3,1)]第三次迭代

有没有办法可以解决这个问题,因为我发现List的每个元素都存储了point object movingPoint,当移动点更改时,包含它的每个元素都是如此。

1 个答案:

答案 0 :(得分:2)

你必须在循环的每次迭代中重新创建movingPoint

private List<PointF> userPath = new ArrayList<PointF>();
pointF movingPoint = null; // change here
pointF initialPoint = new pointF();
initialPoint = (1,1);

for (i = 0; i < 5; i++)
{
    movingPoint = new pointF(); // change here

    movingPoint.x = initialPoint.x + i;
    movingPoint.y = initialPoint.y;

    userPath.add(movingPoint);
}

如果您不重新创建它,由于您保留了引用,您基本上会将相同的对象多次添加到列表中。因此对对象movingPoint的任何修改都会影响列表中的所有对象,因为它们对同一对象都具有相同的引用。