列表报告所有对象在同一个java中?

时间:2011-11-30 14:42:57

标签: java list

我使用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中的所有对象返回为具有相同的值 - 最后一个访问的值。

谁能告诉我哪里出错?

4 个答案:

答案 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个变量。你应该重温这个。