【问题标题】:Why are these variables not loading in ArrayList为什么这些变量没有加载到 ArrayList
【发布时间】:2014-03-08 22:07:39
【问题描述】:

我找不到这段代码有什么问题。我有一个叫做“数据”的短类型数组。我将 data[i] 值分配给私有 Point 对象变量 x,然后将此对象添加到 ArrayList 并继续下一个 i。在 arraylist 中,所有实例都具有相同的值 - 最后一个被添加。你为什么这么认为?

    ArrayList<Point> p = new ArrayList<Point>();

        System.out.println("start test");
    for (int i=0;i<data.length;i++){

        bPunkt.x=(int) data[i];
        p.add(bPunkt);
        System.out.println(""+bPunkt.x);
    }
        System.out.println("middle of test");
    for (int i=0;i<p.size();i++){
        System.out.println(""+p.get(i).x);
    }
        System.out.println("end test");

这是 system.out 打印的内容:

start test
1
0
1
3
3
5
3
5
5
4
middle of test
4
4
4
4
4
4
4
4
4
4
end test

【问题讨论】:

  • 添加前需要给bPunkt分配一个新实例。

标签: java arraylist


【解决方案1】:

您正在修改同一个实例 bPunkt 并将其粘贴在列表中。所以最后你有一个列表,里面一遍又一遍地包含相同的对象。

【讨论】:

  • 下次遇到此类问题时,请打印对象引用。真的很有帮助。
  • 只有在覆盖toString()时才能这样做。
  • 其实我站在corrected.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 1970-01-01
相关资源
最近更新 更多