ArrayList中删除制定对象

来源:互联网 发布:平板电脑 知乎 编辑:程序博客网 时间:2024/06/06 09:28

初次使用list中删除对象或其它元素会直接remove了:


List<District> dists= districts.find(crite).list();

                           for(District   dis:dists){
  Integer  totalHits=LuceneContext.getInstance().findTotalHitsByArea(dis.getName(),city,name);
  System.out.println("totalHits="+totalHits); 
  dis.setTotalHits(totalHits);
  if(totalHits==0){
  dists.remove(dis);
  }   
}


会抛数组越界异常,删除后,遍历的size并没有改变;

作如下的修改即可:

                           for(int i=0 ,len=dists.size();i<len;i++){
 
  System.out.println("District="+dists.get(i).getName()); 
  Integer  totalHits=LuceneContext.getInstance().findTotalHitsByArea(dists.get(i).getName(),city,name);
  System.out.println("totalHits="+totalHits); 
  dists.get(i).setTotalHits(totalHits);
  if(totalHits==0){
  dists.remove(i);
  --len;
  --i;
  }
  
}


0 0
原创粉丝点击