#java
#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?
(Не просматривая каждый список, проверка равна и «удалить»)
Комментарии:
1.
private ArrayList<class1>;
это синтаксически неправильно в class22. Если вы хотите удалить определенный объект из нескольких списков, вы должны удалить его из каждого списка по одному.
Ответ №1:
Допустим, вы делаете это:
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 .. и ничего больше. объект class2 из class1 все еще будет там, и никакие другие списки не будут удалены
Ответ №2:
Если эти два списка не являются одним и тем же экземпляром, удаление элемента из одного списка не влияет на удаление из другого списка. Вам нужно будет просмотреть каждый из них и удалить элемент из каждого.
Ответ №3:
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.