今天碰到一个关于list的remove问题,项目里有个业务需求需要list移除掉指定的object元素。但是使用了list.remove(obejct)方法之后,并无法删除对象。
百度了一下
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final VacationDetail other = (VacationDetail) obj;
if (!Objects.equals(this.detailId, other.detailId)) {
return false;
}
return true;
}
看源码可知,List在删除对象时,先判断这个对象是否在自己的队列中?而这种判断指的是是否equals
因此,List在删除对象时,如果使用删除对象方法,应该最好重写equals方法,否则最好使用删除下标的方法。