java中使用for循环删除List集合的陷阱
一直以为是数据库的数据取错了,导致后面for循环出错。慢慢调试之后,发现这原来是一个坑。回到正题
(错误示范:使用for循环删除list集合)
for(int i=0;i<list.size();i++) { if(list.get(i)!=0) { list.remove(i); } }
错误的原因是每删除list集合的一个元素,list的大小都在发生改变,从而导致索引也在发生改变,从而删除的时候会漏过一些元素。
(正确示范:使用迭代器删除list集合)
Iterator<Integer> it=list.iterator(); while(it.hasNext()) { Integer m=it.next(); if(m!=0) { it.remove(); } }