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も変更されます。list2addメソッドはtoのコピーのみを提供し、list1私が行うことは。list2に対して変更されないと常に思っていましたlist1。
追加list2しlist1たがlist2、将来自由に変更できるようにして、list1再び影響を受けないようにするにはどうすればよいですか?