java - 为什么这些变量没有加载到 ArrayList 中

标签 java arraylist

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

    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 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22275680/

相关文章:

java - 将结果集添加到 ArrayList 需要花费大量时间

java - 从另一个类访问的静态 ArrayList 始终为空

java - 构建和验证 Gigya 签名

java - 如何使用并行端口像开关一样工作,读取(获取)信号并在java中监听真假?

JavaFX - 按钮切换到错误的场景

java - HashMap 中对象的数组列表形式的值

java - 是否可以从列表中删除项目而不引用其索引?

java - 以更具可读性的方式在 ArrayList 中添加元素

java - libGDX 中的计时器错误

java - 有效的方法反转来反转 HashMap ,其中少量的键映射到相同的值