2016-02-29 288 views
-1

所以我想要做的是將一個字符串數組添加到我的Arraylist BDDvars。 我似乎面臨的問題是,在向BDDvars列表添加'temp'(這是一個字符串數組)後,當我立即打印時,我得到了值。但是,在重新初始化temp後,我的數組列表中存在的值也會重置。希望對此有所幫助。謝謝!Java Arraylist重新初始化

代碼是在這裏:

List<String[]> BDDvars =new ArrayList<String[]>(); 

    BDDvars.add(temp); 
    System.out.println(BDDvars.get(0)[0]); // this gives value of temp 
    for(int n =0;n<11;n++) 
     temp[n] = ""; 
    System.out.println(BDDvars.get(0)[0]); // this gives empty string - why? 
+1

我們可以看到請在添加方法中的代碼? – christopher

+1

您向數組添加了_reference_,而不是數組的副本。 –

+0

對不起,你能看到我編輯過的內容,看看你能更好地理解這個問題嗎?謝謝 –

回答

2

當您添加tempBDDvars你沒有創建一個新的陣列。相反,BDDvars中的temp和元素都使用相同的參考。

首先使數組的一個副本,如果你想修改溫度,而不修改BDDvars值:

String[] tempCopy = new String[temp.length]; 
System.arraycopy(temp, 0, tempCopy, 0, temp.length); 
BDDvars.add(tempCopy); 

編輯

或使用clone

BDDvars.add(temp.clone()); 
+2

您不妨使用'.clone()'或'Arrays.copyOf',而不是自己執行'System.arraycopy'。 –

+0

@LouisWasserman喲,我認爲那一個哈哈 – flakes

+1

優秀。這是我想要的。感謝您的及時響應! –