有没有办法让它通过从一个ArrayList中删除一个对象,从它存在的所有其他ArrayLists中删除它?
因此,例如在下面的代码中,如果我从ArrayList fives
中删除了所有内容,则ArrayList test1
将不包含包含值5的NumHolder
。
public static void main(String[] args) throws FileNotFoundException{
ArrayList<NumHolder> test1 = new ArrayList<NumHolder>();
ArrayList<Five> fives = new ArrayList<Five>();
String all = null;
for (int i = 0; i < 90; i++){
NumHolder number = new NumHolder(i);
test1.add(number);
if(i%5==0){
fives.add(number);
}
for (int j = 0; j < fives.size();j++){
fives.remove(0);
}
for (int j = 0; j < test1.size();j++){
test1.get(j).toString();
}
}
答案 0 :(得分:0)
比我的朋友更容易,只是在没有提醒您test1
ArrayList
的情况下,不添加除以5的数字。
ArrayList<NumHolder> test1 = new ArrayList<NumHolder>();
ArrayList<Five> fives = new ArrayList<Five>();
String all = null;
for (int i = 0; i < 90; i++){
NumHolder number = new NumHolder(i);
if(i%5==0){
fives.add(number);
continue;
}
test1.add(number);
}
for (int j = 0; j < fives.size();j++){
fives.remove(0);
}
for (int j = 0; j < test1.size();j++){
test1.get(j).toString();
}
答案 1 :(得分:0)
您可以做的一件事是,不要将您的元素从fives
移除,而是将它们保存在该列表中,并在所有其他列表的单个调用中使用该列表:
test1.removeAll(fives);
如果您不想这样 - 如果列表太多并且您不想在每个列表上调用removeAll(),并且您确实希望所有列表共享元素,然后你可以将元素包装在一个包含单个成员变量的类中。然后将包装器中的成员变量设置为null,而不是将其删除。然后所有列表都将引用相同的包装元素,其包含的值设置为null。
答案 2 :(得分:0)
如果要从两个列表中删除所有5,请使用:
test1.removeAll(fives);
fives.clear();