私はすべての方法を試みましたが、いつも前のものを参照しています。最初にrefrencingせずにarrayListを別のArrayListにコピーする方法は?
mListPreviousData = new ArrayList<>();
for (int i = 0; i < mAddedList.size(); i++) {
mListPreviousData.add(mAddedList.get(i));
}
私はすべての方法を試みましたが、いつも前のものを参照しています。最初にrefrencingせずにarrayListを別のArrayListにコピーする方法は?
mListPreviousData = new ArrayList<>();
for (int i = 0; i < mAddedList.size(); i++) {
mListPreviousData.add(mAddedList.get(i));
}
あなたは、基礎となるオブジェクトのディープコピーを作成する必要があります。
mListPreviousData = new ArrayList<>();
for (int i = 0; i < mAddedList.size(); i++) {
mListPreviousData.add(mAddedList.get(i).clone());
}
好ましくは、あなた自身のclone()
メソッドを実装します。
編集:
全体のArrayListの深いコピーを実行します。
mListPreviousData = (..cast to your type..) mAddedList.clone();
欠点オリジナルのリストデータが変更された場合、複製されたコピーは自動的に更新されます –
私は2つの別々のリストが必要ではないと同じことです。 – UserSharma
リストオブジェクトを複製して2つの別々のリストを作成したくない場合は、データリストアイテムを作成する必要があります。ループ内で毎回mListPreviousDataリストに追加します。毎回新しいオブジェクトを作成する必要があります。 –
mListPreviousData = new ArrayList<>();
mListPreviousData.addAll(mAddedList);
理解を深めてください。 – W4R10CK
がちょうど(mListPreviousData =(ArrayListの)mAddedList.cloneを行います)。あなたはあなたのarraylist型にキャストする必要があります –
両方のarrayListの型は同じですので前のものを参照しています – UserSharma
[this](https://github.com/google/guava)ライブラリまたはコンストラクタを使用することができます**浅い**コピーを取得します。 – DwlRathod