0

リストを別のリストの直接コピーにしようとしています。これは機能しますか?

list1 = list2

すべてのコンテンツを転送しますか、それともまったく転送しませんか?

4

4 に答える 4

1

コピーを作成するのではなく、参照を追加します。追加の参照を作成することとリストに項目を挿入することはどちらもアトミックです。プロシージャは、分割可能でない場合はアトミックです。それが完全に行われたかどうかのどちらかです。

リストを正しく複製する方法については、次のスレッドも参照してください。 Javaコレクションのコピーリスト-わかりません

意志のためのグーグルはjava clone methodあなたも啓発します。

于 2013-02-13T00:47:10.170 に答える
0

そうではありません。Javaでオブジェクトを複製するのはそれほど簡単ではありません。リンクを参照してください。Javaでオブジェクトをコピーするにはどうすればよいですか?

于 2013-02-13T00:48:15.900 に答える
0

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]
于 2013-02-13T00:52:35.360 に答える
0

ほとんどの場合、直接割り当てを使用することは役に立ちません。まったく同じ変数に2つの異なる名前があり、両方が同じメモリアドレスを指しているかのようです。

リストを別のリストに複製する場合は、copy constructor

例えば

ArrayList<E> copyList = new ArrayList<E>(originalList);
于 2013-02-13T00:56:38.343 に答える