作者:燕歆波
导读:在遍历List的时候,使用List的contains(object);判断对象是否存在.存在的话就把他删除掉,可是运行之后发现并没有将已存在的对象删除掉。
原因
在网上查询到了人家给出的原因:
List在删除元素的时候,首先判断这个元素是否存在,然后调用equals方法,判断删除的元素是否与存在的元素相同,然后根据存在元素的下标删除这个元素。
所以,List在删除对象时,如果使用删除对象方法,应该最好重写equals方法,自己判断两个对象是否相同,或者使用删除下标的方法。
@Override
public boolean equals(Object obj) {
if(obj == null){
return false;
}
if(this==obj){
return true;
}
if(obj instanceof Person){
Person serviceBean=(Person)obj;
if(serviceBean.getName().equals(this.getName()) && serviceBean.getCode().equals(this.getCode()) && serviceBean.getSort() == this.getSort()){
return true;
}else{
return false;
}
}
return false;
}