List集合在遍历过程中的删除

Posted yb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List集合在遍历过程中的删除相关的知识,希望对你有一定的参考价值。

List集合在遍历过程中的删除:[1,1,2,3,4,5]

for循环正续会漏掉一个1

for(int i=0;i<list.size();i++){

if(list.get(i).equals(1)){

list.remove(i);

}

}

for循环倒序可以删除所有1

for(int i=list.size()-1;i>=0;i--){

if(list.get(i).equals(1)){

list.remove(i);

}

}

迭代器和foreach遍历时删除都会报错:java.util.ConcurrentModificationException

foreach就是通过Iterable接口在序列中进行移动

Iterator iterator=list.iterator();

while(iterator.hasNext()){

int temp=(int) iterator.next();

if(temp==1){

list.remove(temp);

}

}

for (Object object : list) {

if(list.get(0).equals(1)){

list.remove(0);

}

}

因此,不能在对一个List进行遍历的时候将其中的元素删除掉

解决办法是,你可以先将要删除的元素用另一个list装起来,等遍历结束再remove掉

可以这样写

List delList = new ArrayList();//用来装需要删除的元素

for(Information ia:list)

if(ia.getId()==k){

n++;

delList.add(ia);

}

list.removeAll(delList);//遍历完成后执行删除

以上是关于List集合在遍历过程中的删除的主要内容,如果未能解决你的问题,请参考以下文章

List 集合 remove 对象时出现 ConcurrentModificationException

集合遍历过程iterator, 添加删除元素报异常

详解遍历集合和遍历集合时删除集合元素

如何遍历并删除Dictionary集合内容

如何遍历并删除Dictionary集合内容

List集合三种遍历方法