Вопрос, который я хочу задать, касается вопроса о программировании в kotlin. Этот вопрос может показаться действительно плохим, но я не могу думать, как справиться с этой ситуацией.
val array = ArrayList<ArrayList<Int>>()
val subAnswer = ArrayList<Int>()
subAnswer.add(1)
subAnswer.add(2)
subAnswer.add(3)
array.add(subAnswer)
subAnswer.clear()
Если я распечатал массив, он будет пустым. Я ожидал, что subAnswer очищен, но массив будет содержать [[1,2,3]]. Я хочу знать, почему. Разве он не должен содержать [[1,2,3]]? Почему очистка subAnswer очистила и массив? И как это можно решить?
Я думал, что объект был скопирован и добавлен в массив, поэтому добавленный объект в массив и subAnswer не использует один и тот же адрес памяти. В этом случае кажется, что добавленный объект - это просто ссылка на subAnswer, поэтому очистка subAnswer также может повлиять на массив.
Если я хочу получить ожидаемое поведение, как я могу это сделать? Если есть блоги по этой проблеме, связанные с концепцией программирования, пожалуйста, дайте мне знать. Спасибо.