У меня странные проблемы в моем приложении для Android, и я думаю, что это может быть связано с поведением работы ArrayList.Проверьте следующий код и, пожалуйста, скажите мне, если я прав или делаю что-то не так:
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 к другому он делает это по ссылке?
Итак, если у меня есть следующий метод:
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>>;
};
, чтобы убедиться, что если я очищу входящий массив где-то еще, ничего не произойдет с массивом группы?