我的项目中有三个班级。其中一个是Main类,它包含来自类Operation的ArrayList。最后一个类是Algorithm,它还包含来自Operation的对象的ArrayList。我的问题是,当我从一个List中删除对象时,它也会从另一个列表中删除。我不知道为什么,任何提示?以下是代码的一部分:
class Main{
static ArrayList<Operation> operations = new ArrayList<>();
...
public static void main(String args[]){
Algorithm algorithm = new Algorithm();
algorithm.mrowkowy();
}
class Algorithm{
ArrayList<Operation> operations_temp = Main.operations;
...
mrowkowy(){
...
Operation Actual = new Operation();
operations_temp.remove(Actual);
}
答案 0 :(得分:0)
更改
ArrayList<Operation> operations_temp = Main.operations;
到
ArrayList<Operation> operations_temp = (ArrayList<Operation>)Main.operations.clone();
或更好
List<Operation> operationsTemp = new ArrayList<>(Main.operations);
//↑ ⬑use camelCase in Java
//└─────prefer to work on interfaces to increase flexibility of code
你正在做的事情,两个对象是相同的,因此删除一个基本上是删除另一个。通过调用.clone(),您将创建一个新的对象列表,从中删除时,不会从父对象中删除相应的键。