192.168.1.43_20200907-田福申
日志
问题
当运行时总会发生漏删
@Override
public boolean retainAll(Collection<?> c) {
if(c instanceof Bag && c.size()<=this.size()) {
Bag b=(Bag)c;
for (int i = 0; i < counter ; i++) {
if(!b.contains( elements[ i ] )) {
this.remove(elements[ i ]);
}
}
}
return true;
}
解决
漏删的原因是数组的元素索引改变了,但是循环还没有改变,所以增加i--,每次删除后都进行一次,保证循环和索引一致。
@Override
public boolean retainAll(Collection<?> c) {
if(c instanceof Bag && c.size()<=this.size()) {
Bag b=(Bag)c;
for (int i = 0; i < counter ; i++) {
if(!b.contains( elements[ i ] )) {
this.remove(elements[ i ]);
i--;
}
}
}
return true;
}
近期评论