ArrayList<ArrayList<String>> list1 = new ArrayList<ArrayList<String>>();
ArrayList<String> list2 = new ArrayList<String>();
list2.add("foo");
System.out.println(list2); //[foo]
list1.add(list2);
System.out.println(list1); //[[foo]]
list2.set(0, "bar");
System.out.println(list2); //[bar]
System.out.println(list1); //[[bar]]
上面的代码显示了 2 个列表。当我将list2
(包含foo
)添加到list1
它们时,它们现在都包含foo
. 但是当我修改list2
为bar
,list1
也会改变。我一直认为 add 方法只提供 to 的副本,list2
而list1
我所做的 tolist2
不会改变list1
.
list2
我怎样才能让它成为我添加list1
但允许list2
在未来自由修改所以list1
不会再次受到影响?