JAVA:添加到ArrayList会导致修改其内容

时间:2018-01-06 18:06:41

标签: java arraylist

我正在尝试将整数数组添加到ArrayList中,但似乎每次添加新数组时,所有其他数据的内容都会被修改为与最后一个相同。

for (int a = 0; a<taille; a++) {
    temp[0] = this.caseX-a; 
    temp[1] = this.caseY;
    this.occupe.add(temp);
    for ( int j = 0; j < this.occupe.size(); j++ )
            System.out.println("element " + j + ": " + this.occupe.get(j)[0] );

caseXcaseY是两个整数,我的数组是this.occupe

输出结果为:

element 0: 4
element 0: 3
element 1: 3
element 0: 2
element 1: 2
element 2: 2
element 0: 1
element 1: 1
element 2: 1
element 3: 1

虽然它应该是:

element 0: 4
element 0: 4
element 1: 3
element 0: 4
element 1: 3
element 2: 2
element 0: 4
element 1: 3
element 2: 2
element 3: 1

1 个答案:

答案 0 :(得分:2)

每次添加都使用相同的对象 您需要在occupe List

中添加不同的对象

因此,在每次迭代中(在循环中而不是之前)实例化temp 但实际上你可以做得更简单。您不需要引入中间变量。

你可以写一下:

this.occupe.add(new int[]{this.caseX-a, this.caseY});

未指定temp数组的元素类型 如果需要,请更改int[]