在项目开发中遇到的问题,之前一直没注意,后来调试发现了端倪,每次我取完list后要筛掉那些不符合条件.
但是经常会有其他数据掺杂着,百思不得其解,上网百度也没搜出来相关的问题,询问同事后学习到了,特此记录
List<Object> list = service.findList(queue);
使用list.remove会导致list.size发生改变 极易导致数据判断不足for(int i =0;i<list.size();i++){
Object eQ = list.get(i);
if(ids!=null&&!ids.contains(eQ.getId())){
list.remove(i);
}
每次循环后remove,都会使原来list的下标变得混乱起来,这样极易发生比对不全 ,显示信息不正确的情况.
对此使用下面的迭代器就不会出现问题了.
for(Iterator<Object> it = list.iterator(); it.hasNext();) {
Object eQ = it.next();
if(ids!=null&&!ids.contains(eQ.getId())){
it.remove();
}
}