8

2つのArrayListを使用して、最初のものを2番目のものの「コピー」に変換する最良の方法は、

myFirstArray.clear();
myFirstArray.addAll(mySecondArray);

また

myFirstArray = mySecondArray.clone();

これらの 2 つの方法の主な違いは何ですか。どちらが好ましいか、別の「より簡単な」または「よりクリーンな」ソリューションがあります。ヒントをありがとう

EDIT : このコピーを使用して、現在作業中のアイテムの配列を、次のループで作業するアイテムを格納するものに置き換えます。ループの最後で、 currentArrayList を futurArrayList に置き換え、新しいアイテムを追加するために futurArraylist をクリアします (十分にクリアされていることを願っています)。

4

4 に答える 4

13

最初のものは、リストの内容を別の内容に置き換えます。2 番目のものは別の ArrayList インスタンスを作成し、前のものはそのままにします。

リストが他のオブジェクトによって参照されていて、この他のオブジェクトをそのままにしたい場合は、2 番目のオブジェクトを使用します。他のオブジェクトにも新しいコンテンツを持たせたい場合は、最初のオブジェクトを使用してください。

他に何もリストを参照していない場合、それは大した問題ではありません。2番目のものは、巨大なリストの内容をいくつかの要素で置き換える場合に使用されるメモリを削減します.

于 2013-07-23T12:16:05.250 に答える
1

それを使用します:

List<Object> first = ...
ArrayList<Object> second = new ArrayList<>(first);

また、まったく使用しないことをお勧めしますclone()。コピー コンストラクターまたはファクトリ メソッドを使用することをお勧めします。こちらをご覧ください。

もちろん、あなたの場合、 を使用すると、ArrayList期待どおりに機能し、参照のコピーになります。

于 2013-07-23T12:16:15.930 に答える
0

グァバ、グァバ、グァバ!

final List copied = ImmutableList.copyOf(originalList);
于 2013-07-23T12:41:42.273 に答える