我想將一個整數數組添加到ArrayList
。在某些條件下元素充滿有效信息;否則數組填充-1。通過引用調用錯誤地修改數組元素
List<int []> starArray = new ArrayList<>();
int [] star = {-1, -1, -1};
for (int i = 0; i < 10; i++) {
if (i < 5) {
star[0] = i;
star[1] = 2*i;
star[2] = 3*i;
starArray.add(star);
} else {
star[0] = star[1] = star[2] = -1;
starArray.add(star);
}
}
問題是,一旦它進入else
並設置star = 0
,都在starArray
的元素將設置爲-1。這意味着,在循環之後,我得到了starArray
中的全部-1。我想要這個結果
0#0#0
1#2#3
2#4#6
...
-1#-1#-1
看起來參考被添加到starArray
。我想解釋的是我想創建一個具有3個元素的臨時數組(星號)。所以明星將佔用96個字節。然後我將這96個字節移動到一個ArrayList。接下來,我在Star的同一位置創建另外3個元素數據,並將另外96個字節推送到ArrayList。因此,通過推2 star
到ArrayList中,我將使用
96 bytes => original star
96 bytes => first element of ArrayList
96 bytes => second element of ArrayList
所以,我怎樣才能解決呢?
通過創建數組的副本。 – Kayaman
@chris:我不想那樣!因爲starArray [0]實際上是{0,0,0}和... – mahmood
@Kayaman:我想創建一個單個數組並對其進行多次修改。否則,我必須在循環內創建數組,並且對於大循環,它浪費了內存位置。 – mahmood