私は2D ArrayList
です。 ArrayList
は、1ArrayList
を含む。私は次のコードを試しました:2d arraylists in java(最終的に同じコレクションになる理由)
これは主な2D ArrayList
です。ここで私はArrayList
の1のコピーを作成しようとしました(selectedRow
は私が取得されArrayList
言うだけの数である)その後
ArrayList<Items> newList = new ArrayList<Items>(arrayList.get(selectedRow));
ArrayList<ArrayList<Items>> arrayList = new ArrayList<ArrayList<Items>>();
:メインArrayList
内部ArrayList
のがare10私は別のものを作成するArrayList
:
ArrayList<Items> changeList = new ArrayList<Items>(it.returnTheNewArrayList(newList,randomItem));
次に、私はこのmet hod。このメソッドの目的は、オブジェクトの1つの属性を変更することです。
public ArrayList<Items> returnTheNewArrayList(ArrayList<Items> a,int item){
int randomBin = r.nextInt(50);
for(Items i:a){
if(item==i.itemIds()){
while(randomBin==i.bins()){
randomBin = r.nextInt(50);
}
i.setBin(randomBin);
}
}
return a;
}
最後に、私はこれが手順で、2DのArrayList
arrayList.set(whichList, changeList);
で新しいのArrayListを設定します。私はこの手順を実行すると、newList
とchangeList
の両方が同じであることを確認しました。これらの両方で、私はreturnTheNewArrayList
の方法で行った変更を保存しています(私はデバッグでそれを見つけました)。しかし、私は1つだけを変更したい(changeList
)。
どうしたのですか?
を取得するには、今度は同じオブジェクトをリストのコピーに入れます。 BTW 'Items'はクラスの奇妙な名前です。この型の1つのオブジェクトが1つのアイテムであれば、クラス 'Item'をよりよく呼び出すことができます。 –