1

別のからの数字で埋めようとしているリストがありますList。ただし、コピー元のリストの番号を変更すると、他のリストの番号も変更されます。これを防ぐ方法はありますか?

4

3 に答える 3

4

リストの値を新しいリストにコピーする必要があります。

List<Integer> list1 = Arrays.asList(1, 2, 3);
List<Integer> list2 = new ArrayList<String>(list1); // copy the values of list1 into list2

これにより、のすべての値がにコピーさlist1list2ます。次に、変更せlist2ずに変更list1を加えることができ、その逆も可能です。


明確にするために:

それは深いコピーをしません。ただし、これはディープ/シャローコピーの問題ではありません。ここでの問題は、OPがリストを別のメソッドに渡していて、リストに番号が追加/削除されていることを知って驚いたことです。

于 2012-06-27T18:45:17.390 に答える
3

2つのリストには、同じ番号のオブジェクトへの参照が含まれています。最初のリストの番号を変更すると、2番目のリストで参照されているのと同じオブジェクトが変更されます。

番号の個別の独立したコピーで2つのリストを維持するには、リストをコピーする必要があります。たとえば、を使用しCollections.copyます。

于 2012-06-27T18:46:17.613 に答える
1

リストのオブジェクトをディープコピーする必要があります。Collections.copy(List1, List2);カスタムコードを使用または記述します。

于 2012-06-27T18:51:06.293 に答える