比较两个arraylist并删除常用元素

时间:2018-03-30 16:05:25

标签: java android arraylist

我知道这个问题之前已被多次询问过。但在我的问题中有两个相同对象类型的arraylist。让我们说arraylist A包含5个元素,arraylist B包含2个元素。

Arraylist A elements = obj1,obj2,obj3,obj4,obj5

Arraylist B elements = obj1,obj2

我想要的是我想删除arraylist B中存在的所有元素,即arjylist,即obj1,obj2。然后最后的Arraylist A应该是这样的:

Arraylist A = obj3,obj4,obj5

我实施的代码:

for (int i=0;i<arraylistB.size();i++){
    if(arraylistA.contains(arraylistB.get(i))){
        arraylistA.remove(arraylistB.get(i));
        arraylistB.remove(i);
   }
}

但是这段代码没有从Arraylist A中删除任何内容,我也不知道自己做错了什么。请帮帮我!

2 个答案:

答案 0 :(得分:2)

您需要覆盖Object1,Object2等类的equals()hashcode(),它们应该是同一个类的实例。

然后你可以做removeAll()

答案 1 :(得分:0)

猜测arraylistA和arraylistB中的元素是不一样的,意思是不引用相同的地址,所以这个检查不正确

if(arraylistA.contains(arraylistB.get(i)))

应该通过例如而是id元素。