2016-10-19 2 views
-1

У меня есть эти классы:Удалить все экземпляры данного объекта из ArrayList этого объекта

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, используя данный метод, автоматически удаляет этот экземпляр из всех ArrayList что производные от класса 1? (без прохождения каждого списка, проверка является равно и «удалите»)

+1

'частного ArrayList ,' это синтаксический неправильно в class2 –

+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 удаляется .. и больше ничего , class2 объекта класса 1 все равно будет отсутствовать и никакие другие списки не будут удалены.

0

Если эти два списка не совпадают, удаление элемента из одного списка не влияет на удаление из другого списка. Вам придется пройти через каждый и удалить элемент из каждого.

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. 
Смежные вопросы