Java Liste des points


J'ai donc un problème avec cette ligne de code.

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

Donc, ce que je veux, c'est que la liste userPath ait chaque coordonnée, [(1,1), (2,1), (3,1)...]

Au lieu de cela, je continue à obtenir [(1,1)] première itération [(2,1), (2,1)] deuxième itération [(3,1), (3,1), (3,1)] troisième itération

Existe - t-il un moyen de contourner ce problème, car je me rends compte que chaque élément de la liste stocke l'objet point movingPoint et lorsque le point de déplacement change, chaque élément le fait également qui la contient.

Author: CFleming, 2014-07-14

1 answers

, Vous devez recréer movingPoint à chaque itération de la boucle.

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

Si vous ne le recréez pas, puisque vous conservez la référence,vous ajoutez essentiellement le même objet plusieurs fois à la liste. Ainsi, toute modification de l'objet movingPoint avec affecte tous les objets de la liste, car ils ont tous la même référence au même objet.

 2
Author: AntonH, 2014-07-14 03:21:35