我使用java中的对象列表(Area),我将其定义为:
public static List<Area> areaList = new ArrayList<Area>();
我将内容添加到我的列表中:
areaList.add(new Area(px, py, pz, radius, wl));
然后我访问列表,检查其中的每个区域,如下所示:
for (int i = 1; i < areaList.size(); i++) {
System.out.println(areaList.get(i).somevariable));
}
(忽略'somevariable',我也没有使用println(),例如,我使用的方式访问:
areaList.get(i)
这里有什么重要的意义)
但是它将List中的所有对象返回为具有相同的值 - 最后一个访问的值。
谁能告诉我哪里出错?
答案 0 :(得分:1)
这不是解决方案,但您应该使用i=0
答案 1 :(得分:0)
您可以尝试打印每个对象的hashcode()
以查看它们是否真的相同,只要不被覆盖。
此外,您正在1
开始迭代,您需要从0
开始迭代整个集合。
答案 2 :(得分:0)
您确定要从i = 1而不是i = 0开始吗?如果您只使用两个对象运行测试,这可能是相关的
答案 3 :(得分:0)
我查看了您上传的代码,发现了错误。
您已将班级Area
中的每个字段声明为静态:
public class Area {
public static int posx;
public static int posy;
public static int posz;
}
因此,所有实例的字段都相等,因为类posx
只有一个Area
字段(阅读this question以及详细信息的答案)。因为每次写,e。 g。,posx
会覆盖旧值。删除static
关键字,然后类Area
的所有实例都有自己的实例变量。
您还应该考虑将它们设为私有,并提供getter和setter方法。
我没有仔细查看您的代码,但有几个地方您使用了static
个变量。你应该重温这个。