gpt4 book ai didi

Java - ArrayList 改变我的数据。为什么?

转载 作者:行者123 更新时间:2023-12-01 21:19:04 25 4
gpt4 key购买 nike

我有一个ArrayList在我的方法中。它包含一类特殊的 Circles。 ColoredCircle内有一个类型为 Point2D.Double p1 的变量。我必须将这些坐标转换到不同的坐标系上。当我这样做时,该方法正在更改我的 ArrayList,用转换后的坐标填充它。为什么?我什至没有碰我的ArrayList在我的转换方法中。

    public ArrayList<ColoredCircle> algorithm(final ArrayList<ColoredCircle> circleList) {


ColoredCircle a = circleList.get(0);
ColoredCircle b = circleList.get(1);
ColoredCircle c = circleList.get(2);

for (ColoredCircle cr : circleList) {
System.out.println("algo"+ cr.getPoint().getX()+" "+cr.getPoint().getY());
}

Point2D.Double circleCoordinateC1 = this.transorm_coordinates_circle(b.center, a.getPoint());

for (ColoredCircle cr : circleList) {
System.out.println("algo2"+ cr.getPoint().getX()+" "+cr.getPoint().getY());
}

转化方法:

    public Point2D.Double transorm_coordinates_circle(Point2D.Double circle_center, Point2D.Double point) {

double x = point.getX() - circle_center.getX();
double y = (point.getY() - circle_center.getY()) * -1;
point.setLocation(x, y);

System.out.println("Point "+point.getX()+" "+point.getY());

return point;
}

最佳答案

一切都按预期工作,列表通过引用处理对象。您不会克隆圆形对象,因此这些对象会被操纵。

该列表仅存储指向这些对象的指针。

google:按引用调用、按值调用并在 java 中读取其详细信息

关于Java - ArrayList 改变我的数据。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39468623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com