我知道这个问题之前已被多次询问过。但在我的问题中有两个相同对象类型的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
中删除任何内容,我也不知道自己做错了什么。请帮帮我!
答案 0 :(得分:2)
您需要覆盖Object1,Object2等类的equals()
和hashcode()
,它们应该是同一个类的实例。
然后你可以做removeAll()
。
答案 1 :(得分:0)
猜测arraylistA和arraylistB中的元素是不一样的,意思是不引用相同的地址,所以这个检查不正确
if(arraylistA.contains(arraylistB.get(i)))
应该通过例如而是id
元素。