从多个ArrayLists中删除一个对象

时间:2015-11-12 22:36:00

标签: java arraylist

有没有办法让它通过从一个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();
    }

}

3 个答案:

答案 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();