Java中的ArrayList问题

dev*_*per 2 java arraylist

我有问题让我的ArrayList正确添加.当我在for循环完成后打印ArrayList时,ArrayList的长度是正确的,但是每个元素都是相同的(创建的最后一个Coordinate).

有人可以修复(并解释)下面的代码吗?

public class test {

private static ArrayList<Coordinate> mOrigCoords;
private static ArrayList<Coordinate> mNewCoords;
private static int mListSize;
private static int mPixelsX;

public static void main(String[] args) 
{

    mOrigCoords = new ArrayList<Coordinate>();
    mNewCoords  = new ArrayList<Coordinate>();

    mPixelsX = 480;

    int j = 0;

    Coordinate newCoord = new Coordinate(0,0);

    for(int i = 0; i < 96; i++)
    {
        j = j + 5;

        newCoord.setX(j);
        newCoord.setY((int)(Math.random()*300));

        mOrigCoords.add(newCoord);
    }

    mListSize = mOrigCoords.size();

    for(int n = 0; n < mListSize; n++)
    {
        System.out.println("test " + mOrigCoords.get(n).toString());
    }

}
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

Laj*_*pad 10

代替

Coordinate newCoord = new Coordinate(0,0);

    for(int i = 0; i < 96; i++)
    {
        j = j + 5;

        newCoord.setX(j);
        newCoord.setY((int)(Math.random()*300));

        mOrigCoords.add(newCoord);
    }
Run Code Online (Sandbox Code Playgroud)

你应该有

Coordinate newCoord = null;

for(int i = 0; i < 96; i++)
{
    newCoord = new Coordinate(0,0);
    j = j + 5;

    newCoord.setX(j);
    newCoord.setY((int)(Math.random()*300));

    mOrigCoords.add(newCoord);
}
Run Code Online (Sandbox Code Playgroud)

这样,arrayList将保存许多对象而不是只有一个.ArrayList中的所有元素都指向同一个对象,这是导致问题的原因.