ArrayList.remove()

时间:2015-01-10 01:16:39

标签: java arraylist

我的项目中有三个班级。其中一个是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);
    }

1 个答案:

答案 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(),您将创建一个新的对象列表,从中删除时,不会从父对象中删除相应的键。