对Arraylist遍历进行remove操作时报数组下标越界异常

 异常信息如下:对Arraylist遍历进行remove操作时报数组下标越界异常_第1张图片

原因:每次remove后的size都会发生变化,但是迭代基数没有根据remove后的size动态调整,导致越界及集合遍历不完全。 

正确用法

1.在remove操作后,将索引位置-1 

ArrayList arr = new ArrayList();
...
for(int i = 0; i < arr.size(); i++){            
    if(arr.get(i) == 0){  
        arr.remove(i);
        i--;
    }
}

2.使用迭代器

ArrayList arr = new ArrayList();
...
Iterator it = arr.iterator();
while(it.hasNext()){
   if(it.next() == 0)
      it.remove();
   }
}

 

你可能感兴趣的:(Java基础,异常)