我有两个ArrayLists,
ArrayList<Item> array1 = new ArrayList<>();
// and
ArrayList<Item> array2 = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
在Item类中我也有默认值 boolean check = false;
我检查,在清理所有内容之前array2.clear(),需要从array1添加到array2:
array2.clear();
for (Item i : array1) {
if (.....) {
array2.add(i);
}
}
Run Code Online (Sandbox Code Playgroud)
如果在array2 boolean check中更改false为true,则在array1中也会更改它.如何将它们分开,以便下次向array2添加元素时,布尔检查不会复制为true?
您将相同的对象添加到两个ArrayList.如果要分隔对象,请创建项的新实例并将其添加到array2.在创建时,Item您将需要一个构造函数,该构造函数接受所有成员的值并将其设置为新对象.或者您可以获取Item对象并在构造函数中设置值.
物品类:
public class Item {
boolean check = false;
//Other members
//Copy constructor
public Item(Item itemToCopy) {
check = itemToCopy.check;
// set other members
}
}
Run Code Online (Sandbox Code Playgroud)
主要部分:
array2.clear();
for (Item i : array1) {
if (.....) {
//Use copy constructor
Item newItem = new Item(i));
array2.add(newItem);
}
}
Run Code Online (Sandbox Code Playgroud)