从该对象的arraylist中删除给定对象的所有实例

时间:2016-10-19 14:54:27

标签: java

我有这些课程:

public class class0{
    private ArrayList<class1> array;
    ...
    public void remove(Class1 class1){
        array.remove(class1);
    }
}

public class class1{    
    private Class2 array;
}

public class class2{
    private ArrayList<class1>;
}

当我使用给定方法删除class1的对象时,是否有可能从每个从class1派生的arraylist中自动删除该实例? (不经过每个列表,检查是等于&#34;删除&#34;)

3 个答案:

答案 0 :(得分:0)

让我们说你这样做:

ArrayList<Class1> array = ArrayList<Class1>();

public void add(Class1 class1){
   array.add(class1);
}

public void remove(Class1 class1){
        array.remove(class1);
    }

public static void main(String argv[]){
   Class1 class1 = new Class1();
   Class1 class2 = new Class1();
   new class0.add(class1);
   new class0.add(class2);
   new class0.remove(class1);
}

通过这样做只删除了class1对象的数组列表..而没有别的。 class1的class2对象仍然存在,没有其他列表被删除

答案 1 :(得分:0)

除非这两个列表是同一个实例,否则从一个列表中删除元素不会影响从另一个列表中删除。您将不得不浏览每一个并从每个元素中删除元素。

答案 2 :(得分:0)

ArrayList<'class1> array; // This won't allow anything else but objects of class1

So deleting all objects of class1 is equivalent to clearing the entire array.

If you define: ArrayList array; // without <class1> 
then you can iterate through it and see if entry is of a type by using: 

instanceof 

and then delete it.