我在我的android應用程序中出現奇怪的問題,我認爲它可能會鏈接到ArrayList工作方式的行爲。請檢查下面的代碼,並請告訴我,如果我正確或做錯了什麼:當在java中使用ArrayList <ArrayList <String>>時出現奇怪的結果
ArrayList<ArrayList<String>> arr = new ArrayList<ArrayList<String>>();
ArrayList<String> tmp = new ArrayList<String>();
tmp.add("test");
arr.add(tmp);
tmp.clear();
最後一行ARR [0]的內容被清空後。那麼這是否意味着當向另一個ArrayList添加一個ArrayList時,它通過引用來完成它?
所以,如果我有以下方法:
void addArray(ArrayList<String> arr) {
group.add(arr); // group is ArrayList<ArrayList<String>>;
};
我必須將其更改爲:
void addArray(ArrayList<String> arr) {
ArrayList<String> tmp = new ArrayList<String>();
tmp.addAll(arr);
group.add(tmp); // group is ArrayList<ArrayList<String>>;
};
,以確保如果我清除進入陣列別的地方沒有任何反應的組陣列?
是的,ArrayList(和所有其他集合)只存儲對象的引用,它們不克隆或複製它們。 – Jens