我有这些课程:
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;)
答案 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.