Рассмотрим следующий код:Java ArrayList ясно или возобновляем
import java.util.ArrayList;
public class Main{
public static void main(String args[]){
ArrayList<ArrayList<Integer>> test = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> a = new ArrayList<Integer>();
a.add(7);
test.add(a);
System.out.println(test);
a.clear()
System.out.println(test);
}
}
Выход теста будет отличаться друг от друга (Один [[7]], а другой [[]]) Если мы используем = новый ArrayList() вместо a.clear(), результат будет другим. Я думал, что «тест» уже записал «а», поэтому я могу сделать что-нибудь о «а» без изменения «теста». Кто-нибудь может сказать мне, что произойдет, когда я использую a.clear() и исправлю свою мысль? Благодарю.
Как сохранить значение вместо ссылки? Я имею в виду, если я изменил «a» на a.add (4); Весь «тест» изменился. Но я надеюсь, что тест останется прежним. Что мне делать? – Pugna
@ Пугна Ты не можешь. Значение переменной является ссылкой на объект, а не на объект. 'a.add (4)' все еще добавляет к объекту, на который ссылается 'a'. Если вы хотите добавить в другой/новый список, создайте его и назначьте ссылку на него 'a'. –