リストを別のリストの直接コピーにしようとしています。これは機能しますか?
list1 = list2
すべてのコンテンツを転送しますか、それともまったく転送しませんか?
コピーを作成するのではなく、参照を追加します。追加の参照を作成することとリストに項目を挿入することはどちらもアトミックです。プロシージャは、分割可能でない場合はアトミックです。それが完全に行われたかどうかのどちらかです。
リストを正しく複製する方法については、次のスレッドも参照してください。 Javaコレクションのコピーリスト-わかりません
意志のためのグーグルはjava clone method
あなたも啓発します。
そうではありません。Javaでオブジェクトを複製するのはそれほど簡単ではありません。リンクを参照してください。Javaでオブジェクトをコピーするにはどうすればよいですか?
list2
いいえ。参照に保存されているのと同じリストへの参照ポイントのみを作成しlist1
ます。copy constructor
あるリストから別のリストに参照をコピーするために使用できますが、これはディープコピーではないため、注意してください->新しいリストには、元のリストに保存されているものとまったく同じオブジェクトが含まれます。これが例です
List<String> list1 = new ArrayList<>();
list1.add("one");
list1.add("two");
List<String> list2 = list1;//now list2 will point to the same list as list1
list2.add("A");
//lets print content of list1
System.out.println(list1); // -> output: [one, two, A]
//--------------------------------------------------------------
//This way you can create separate list that contains same values as list1
List<String> list3 = new ArrayList(list1);
list3.add("B");
System.out.println(list1); // -> output: [one, two, A]
System.out.println(list3); // -> output: [one, two, A, B]
ほとんどの場合、直接割り当てを使用することは役に立ちません。まったく同じ変数に2つの異なる名前があり、両方が同じメモリアドレスを指しているかのようです。
リストを別のリストに複製する場合は、copy constructor
例えば
ArrayList<E> copyList = new ArrayList<E>(originalList);